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