Como podemos especificar dois separadores de campo no comando awk quando um deles é o espaço? Acho que isso pode ser feito usando uma condição if-else incorporada no awk, no entanto, não tenho certeza sobre o comando exato.
O arquivo de amostra é o seguinte:
cat test.txt Swapnil Engineer 20000 Avinash:Doctor:30000 Dattu GovntJob 50000 Amol:Master:10000
Quero imprimir a segunda coluna ($ 2). A saída esperada é:
Engineer Doctor GovntJob Master
Quando tentei colocar espaço e dois-pontos como separadores de campo, ocorreu um erro de sintaxe:
awk -F[ :] "{print $2}" test.txt awk: cmd. line:1: :] awk: cmd. line:1: ^ syntax error
Como podemos usar dois separadores de campo e utilizar a funcionalidade awk?
Comentários
Resposta
Você está no caminho certo!
Basta adicionar as aspas que faltam em [ :]
:
awk -F"[ :]" "{print $2}" test.txt Engineer Doctor GovntJob Master
-F[ :]
(um arg) obteve-F[:
e]
. Este gráfico é bastante útil (observe as setas verticais para aspas simples / duplas).