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
Risposta
 Sei sulla strada giusta! 
 Aggiungi le virgolette mancanti intorno a [ :]: 
awk -F"[ :]" "{print $2}" test.txt Engineer Doctor GovntJob Master 
-F[ :](uno arg) ha ottenuto-F[:e]. Questo grafico è molto utile (nota le frecce verticali per virgolette singole / doppie).