separador print para comando columnas campos awk

print - ¿Cómo podría imprimir múltiples palabras delimitadoras usando awk?



comando sed (2)

Su entrada es un CSV, por lo que la forma de manejarlo es GNU awk para FPAT , y su resultado también es un CSV, por lo que establecer OFS en una pestaña no tendría sentido. En general, cuando tiene CUALQUIER archivo que contenga asignaciones de nombre-> valor, la forma más simple y sólida de manejarlo es primero crear una matriz de esas asignaciones ( f[] continuación) y luego puede imprimir o manipular sus datos usando son nombres:

$ cat tst.awk BEGIN { FPAT = "([^,]*)|(/"[^/"]+/")" OFS = "," } { delete f for (i=1; i<=NF; i++) { split($i,t,/[[:space:]":]+/) f[t[2]] = t[3] } print f["firstName"], f["lastName"] } $ awk -f tst.awk file gdrgo,222 beto,111 beto,111 beto2,555 beto2,444 gdrgo,222 beto2,444

Tengo un awk con delimitador de expresiones regulares. Necesito extraer la palabra de nombre y apellido, pero este comando no funciona

awk -v OFS="/t" -v FS=''firstName": "|",[^+]*lastName": "|", "'' ''{sum[$1]+=$2;} {print $1,$2}'' sumacomando

"firstName": "gdrgo", "xxxxx": "John", "xxxxx": "John", "xxxxx": "John", "xxxxx": "John", "xxxxx": "John", "lastName": "222",dfg "xxxxx": "John", "firstName": "beto", "xxxxx": "John", "xxxxx": "John", "xxxxx": "John", "lastName": "111","xxxxx": "John", "xxxxx": "John", "firstName": "beto", "xxxxx": "John", "xxxxx": "John", "xxxxx": "John", "lastName": "111","xxxxx": "John", "xxxxx": "John", "xxxxx": "John", "firstName": "beto2", "xxxxx": "John","lastName": "555", "xxxxx": "John","xxxxx": "John", "xxxxx": "John", "xxxxx": "John", "firstName": "beto2", "xxxxx": "John","lastName": "444", "xxxxx": "John","xxxxx": "John", "firstName": "gdrgo", "xxxxx": "John", "xxxxx": "John", "xxxxx": "John", "xxxxx": "John", "xxxxx": "John", "lastName": "222",dfg "xxxxx": "John", "xxxxx": "John", "firstName": "beto2", "xxxxx": "John","lastName": "444", "xxxxx": "John","xxxxx": "John",

Necesito imprimir

gdrgo,222 beto,111 beto,111 beto2,555 beto2,444 gdrgo,222 beto2,444

por favor, ayúdame


este comando funciona

awk -v OFS=''"'' -v FS=''Name": "'' ''{i = index($3, "/"");i2 = index($4, "/""); print substr($3, 0, i) ";" substr($4, 0, i2) }'' sumacomando

gdrgo,222 beto,111 beto,111 beto2,555 beto2,444 gdrgo,222 beto2,444