Dos separadores de campo (dos puntos y espacio) en awk

¿Cómo podemos especificar dos separadores de campo en el comando awk cuando uno de ellos es espacio? Creo que esto se puede hacer usando una condición if-else incrustada en awk, sin embargo, no estoy seguro del comando exacto.

El archivo de muestra es el siguiente:

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

Quiero imprimir la segunda columna ($ 2). El resultado esperado es:

Engineer Doctor GovntJob Master 

Cuando intenté poner tanto el espacio como los dos puntos como separadores de campo, falló con un error de sintaxis:

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

¿Cómo podemos usar dos separadores de campo y utilizar la funcionalidad awk?

Comentarios

  • Además de Yeti ' s respuesta, recuerde que el shell se divide por espacios en blanco sin comillas para crear la lista de argumentos a awk, así que en lugar de -F[ :] (uno arg) obtuvo -F[: y ]. Este gráfico es bastante útil (observe las flechas verticales para comillas simples / dobles).
  • Gracias ArielCo, ¡muy apreciado!

Respuesta

¡Estás en el camino correcto!
Solo agrega las comillas que faltan alrededor de [ :]:

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *