GNU/Linux >> Znalost Linux >  >> Linux

Jak najít poslední pole pomocí 'cut'

Bez awk?...Ale s awk je to tak jednoduché:

echo 'maps.google.com' | awk -F. '{print $NF}'

AWK je mnohem výkonnější nástroj, který můžete mít v kapse.-F pokud pro pole separatorNF je počet polí (také znamená index posledního)


Můžete zkusit něco takového:

echo 'maps.google.com' | rev | cut -d'.' -f 1 | rev

Vysvětlení

  • rev obrátí "maps.google.com" na moc.elgoog.spam
  • cut používá jako oddělovač tečku (tj. '.') a vybere první pole, což je moc
  • nakonec to znovu obrátíme, abychom dostali com

Není možné použít pouze cut . Zde je způsob použití grep :

grep -o '[^,]*$'

Nahraďte čárku jinými oddělovači.

Vysvětlení:

  • -o (--only-matching ) vypíše pouze tu část vstupu, která odpovídá vzoru (výchozí nastavení je tisknout celý řádek, pokud obsahuje shodu).
  • [^,] je třída znaků, která se shoduje s jakýmkoli jiným znakem než čárkou.
  • * odpovídá předchozímu vzoru nula nebo vícekrát, takže [^,]* odpovídá nule nebo více znakům než čárka.
  • $ odpovídá konci řetězce.
  • Když to dáme dohromady, vzor odpovídá nule nebo více nečárkám na konci řetězce.
  • Pokud existuje více možných shod, grep preferuje tu, která začíná dříve. Bude tedy spárováno celé poslední pole.

Úplný příklad:

Pokud máme soubor s názvem data.csv obsahující

one,two,three
foo,bar

pak grep -o '[^,]*$' < data.csv bude výstup

three
bar

Použijte rozšíření parametrů. To je mnohem efektivnější než jakýkoli druh externího příkazu cut (nebo grep ) včetně.

data=foo,bar,baz,qux
last=${data##*,}

Viz BashFAQ #100 pro úvod do nativní manipulace s řetězci v bash.


Linux
  1. Řazení na posledním poli řádku

  2. Jak zjistit, který proces používá soubor v Linuxu?

  3. Jak mohu spočítat počet složek na jednotce pomocí Linuxu?

  1. Jak zjistit, zda je disk SSD nebo HDD v Linuxu

  2. Jak auditovat oprávnění pomocí příkazu find

  3. Jak najít výchozího správce souborů?

  1. Jak přejmenovat více souborů pomocí funkce Najít?

  2. Jak zadat více mezer pro oddělovač pomocí řezu?

  3. Jak zjistím maximální velikost zásobníku?