quimica moneda examples ejemplos comando shell awk ksh

shell - moneda - ¿Cómo obtener la segunda columna desde la salida del comando?



ksh moneda (7)

La salida de mi comando es algo así como:

1540 "A B" 6 "C" 119 "D"

La primera columna es siempre un número, seguido de un espacio, luego una cadena de comillas dobles.

Mi propósito es obtener solo la segunda columna, como:

"A B" "C" "D"

Tenía la intención de usar <some_command> | awk ''{print $2}'' <some_command> | awk ''{print $2}'' para lograr esto. Pero la pregunta es, algunos valores en la segunda columna contienen espacio (s), que resulta ser el delimitador predeterminado para awk para separar los campos. Por lo tanto, la salida está en mal estado:

"A "C" "D"

¿Cómo obtengo el valor de la segunda columna (con citas emparejadas) limpiamente?


Esto debería funcionar para obtener una columna específica de la salida del comando "imágenes del acoplador":

REPOSITORY TAG IMAGE ID CREATED SIZE ubuntu 16.04 12543ced0f6f 10 months ago 122 MB ubuntu latest 12543ced0f6f 10 months ago 122 MB selenium/standalone-firefox-debug 2.53.0 9f3bab6e046f 12 months ago 613 MB selenium/node-firefox-debug 2.53.0 d82f2ab74db7 12 months ago 613 MB docker images | awk ''{print $3}'' IMAGE 12543ced0f6f 12543ced0f6f 9f3bab6e046f d82f2ab74db7

Esto va a imprimir la tercera columna


No necesitas awk por eso. El uso de read en el shell Bash debería ser suficiente, por ejemplo

some_command | while read c1 c2; do echo $c2; done

o:

while read c1 c2; do echo $c2; done < in.txt


O usa sed y regex.

<some_command> | sed ''s/^.* /(".*"$/)//1/''


Si pudieras usar algo que no sea ''awk'', prueba con esto

echo ''1540 "A B"'' | cut -d'' '' -f2-

-d es un delimitador, -f es el campo para cortar y con -f2- tenemos la intención de cortar el 2do campo hasta el final.


Si tiene GNU awk esta es la solución que desea:

$ awk ''{print $1}'' FPAT=''"[^"]+"'' file "A B" "C" "D"


Use -F [field separator] para dividir las líneas en " s:

awk -F ''"'' ''{print $2}'' your_input_file

o para la entrada de la tubería

<some_command> | awk -F ''"'' ''{print $2}''

salida:

A B C D


awk -F"|" ''{gsub(//"/,"|");print "/""$2"/""}'' your_file