Dois separadores de campo (dois pontos e espaço) no awk

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

  • Além de Resposta do Yeti ' s, lembre-se de que o shell se divide por espaços em branco sem aspas para criar a lista de argumentos para awk, portanto, em vez de -F[ :] (um arg) obteve -F[: e ]. Este gráfico é bastante útil (observe as setas verticais para aspas simples / duplas).
  • Obrigado ArielCo, muito obrigado!

Resposta

Você está no caminho certo!
Basta adicionar as aspas que faltam em [ :]:

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

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *