¿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
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
-F[ :]
(uno arg) obtuvo-F[:
y]
. Este gráfico es bastante útil (observe las flechas verticales para comillas simples / dobles).