separador print examples comparar columnas campos archivos awk

print - Cómo imprimir las últimas dos columnas usando awk



awk unix (4)

Todo lo que quiero son las últimas dos columnas impresas.


@jim mcnamara: intente usar paréntesis para alrededor de NF , es decir, $(NF-1) y $(NF) lugar de $NF-1 y $NF (funciona en Mac OS X 10.6.8 para FreeBSD awk and gawk ).

echo '' 1 2 2 3 one one two three '' | gawk ''{if (NF >= 2) print $(NF-1), $(NF);}'' # output: # 1 2 # 2 3 # two three


usar gawk muestra el problema:

gawk ''{ print $NF-1, $NF}'' filename 1 2 2 3 -1 one -1 three # cat filename 1 2 2 3 one one two three

Acabo de poner boquiabierto a Solaris 10 M4000: Entonces, gawk es el cuplrito ​​en el problema $ NF-1 contra $ (NF-1). Siguiente pregunta ¿qué dice POSIX? por:

http://www.opengroup.org/onlinepubs/009695399/utilities/awk.html

No hay dirección de una manera u otra. No está bien. gawk implica resta, otras awks implican número de campo o sustracción. hmm.


Puede hacer uso de la variable NF que se establece en el número total de campos en el registro de entrada:

awk ''{print $(NF-1),"/t",$NF}'' file

esto supone que tienes al menos 2 campos.


awk ''{print $NF-1, $NF}'' inputfile

Nota: esto funciona solo si existen al menos dos columnas. En los registros con una columna obtendrás un falso "-1 column1"