Jak můžeme určit dva oddělovače polí v příkazu awk, když jedním z nich je mezera? Myslím, že to lze provést pomocí vložené podmínky if-else v awk, ale nejsem si jistý přesným příkazem.
Ukázkový soubor je uveden níže:
cat test.txt Swapnil Engineer 20000 Avinash:Doctor:30000 Dattu GovntJob 50000 Amol:Master:10000
Chci vytisknout druhý sloupec (2 $). Očekávaný výstup je:
Engineer Doctor GovntJob Master
Když jsem se pokusil vložit jak mezeru, tak dvojtečku jako oddělovače polí, došlo k chybě syntaxe:
awk -F[ :] "{print $2}" test.txt awk: cmd. line:1: :] awk: cmd. line:1: ^ syntax error
Jak můžeme použít dva oddělovače polí a využívat funkce awk?
Komentáře
Odpověď
Jste na správné cestě!
Stačí přidat chybějící uvozovky kolem [ :]
:
awk -F"[ :]" "{print $2}" test.txt Engineer Doctor GovntJob Master
-F[ :]
(jeden arg) dostal-F[:
a]
. Tento graf je docela užitečný (všimněte si svislých šipek pro jednoduché / dvojité uvozovky).