vacia una ultimo separador recorrer linea imprimir filas extraer columnas campos campo archivo file awk tail

file - ultimo - Imprimir la última columna de una línea en un archivo



cut linux (9)

Tengo un archivo que se escribe / actualiza constantemente. Quiero encontrar la última línea que contenga una palabra en particular, luego imprimir la última columna de esa línea.

El archivo se ve algo como esto. Se agregarán más líneas A1 / B1 / C1 con el tiempo.

A1 123 456 B1 234 567 C1 345 678 A1 098 766 B1 987 6545 C1 876 5434

Intenté usar

tail -f file | grep A1 | awk ''{print $NF}''

para imprimir el valor 766, pero no sale nada.

¿Hay alguna forma de hacer esto?


Ejecute esto en el archivo:

awk ''ORS=NR%3?" ":"/n"'' filename

y obtendrás lo que estás buscando.


Para imprimir la última columna de una línea simplemente use $ (NF):

awk ''{print $(NF)}''


Puedes hacer esto sin awk con solo algunos tubos.

tac file | grep -m1 A1 | rev | cut -d'' '' -f1 | rev


Puedes hacer todo en awk :

<file awk ''$1 ~ /A1/ {m=$NF} END {print m}''


Una forma de usar awk :

tail -f file.txt | awk ''/A1/ { print $NF }''


Usted no ve nada, debido al almacenamiento en búfer. La salida se muestra cuando hay suficientes líneas o se llega al final del archivo. tail -f significa esperar más entrada, pero no hay más líneas en el file y, por lo tanto, el conducto para grep nunca se cierra.

Si omite -f de la tail la salida se muestra inmediatamente:

tail file | grep A1 | awk ''{print $NF}''

@EdMorton tiene razón, por supuesto. Awk puede buscar A1 , lo que acorta la línea de comando para

tail file | awk ''/A1/ {print $NF}''

o sin cola, mostrando la última columna de todas las líneas que contienen A1

awk ''/A1/ {print $NF}'' file


tal vez esto funciona?

grep A1 file | tail -1 | awk ''{print $NF}''


ls -l | awk ''{print $9}'' | tail -n1


grep A1 aaa.txt|tail -1|awk ''{print $NF}''