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).