unix - print - Cómo imprimir la quincuagésima columna de un archivo de texto con AWK usando argv
linux awk print (2)
awk ''{print $''$myvar''}'' < /tmp/in > /tmp/out
Donde $ myvar es su columna variable (un número entero). ¡Cuidado con las inyecciones de guiones!
Supongamos que tengo un archivo de texto con datos separados por espacios en blanco en columnas. Quiero escribir un script de shell que tome como entrada un nombre de archivo y un número N e imprima solo esa columna. Con awk puedo hacer lo siguiente:
awk < /tmp/in ''{print $2}'' > /tmp/out
Este código imprime la segunda columna.
Pero, ¿cómo se podría incluir eso en un script de shell para que se pueda pasar una columna arbitraria en argv?
awk -v x=2 ''{print $x}''
o en un script de shell:
#!/bin/sh num=$1 awk < /tmp/in -v x=$num ''{print $x}'' > /tmp/out