Due separatori di campo (due punti e spazio) in awk

Come possiamo specificare due separatori di campo nel comando awk quando uno di loro è spazio? Penso che ciò possa essere fatto utilizzando una condizione if-else incorporata in awk, tuttavia non sono sicuro del comando esatto.

Il file di esempio è il seguente:

cat test.txt Swapnil Engineer 20000 Avinash:Doctor:30000 Dattu GovntJob 50000 Amol:Master:10000 

Voglio stampare la seconda colonna ($ 2). Loutput previsto è:

Engineer Doctor GovntJob Master 

Quando ho provato a inserire sia spazio che due punti come separatori di campo, non è riuscito con un errore di sintassi:

awk -F[ :] "{print $2}" test.txt awk: cmd. line:1: :] awk: cmd. line:1: ^ syntax error 

Come possiamo utilizzare due separatori di campo e utilizzare la funzionalità awk?

Commenti

  • Oltre a La risposta di Yeti ', ricorda che la shell si divide per spazi non quotati per creare lelenco di argomenti per awk, quindi invece di -F[ :] (uno arg) ha ottenuto -F[: e ]. Questo grafico è molto utile (nota le frecce verticali per virgolette singole / doppie).
  • Grazie ArielCo, molto apprezzato!

Risposta

Sei sulla strada giusta!
Aggiungi le virgolette mancanti intorno a [ :]:

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

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *