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}''