Dva oddělovače polí (dvojtečka a mezera) v awk

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

  • Kromě Yeti ' s odpovědí, pamatujte, že shell se rozdělí podle uvozovek bez mezer, aby vytvořil seznam argumentů awk, takže místo -F[ :] (jeden arg) dostal -F[: a ]. Tento graf je docela užitečný (všimněte si svislých šipek pro jednoduché / dvojité uvozovky).
  • Díky ArielCo, velmi si toho vážím!

Odpověď

Jste na správné cestě!
Stačí přidat chybějící uvozovky kolem [ :]:

awk -F"[ :]" "{print $2}" test.txt Engineer Doctor GovntJob Master 

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *