打印文件中一行的最后一列

我有一个不断被写入/更新的文件。 我想find包含特定单词的最后一行,然后打印该行的最后一列。

该文件看起来像这样。 随着时间的推移,更多的A1 / B1 / C1线将被追加。

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

我试图使用

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

打印值766,但没有输出。

有没有办法做到这一点?

你没有看到任何东西,因为缓冲。 显示输出,当有足够的线或达到文件结束。 tail -f意味着等待更多的input,但是file中没有更多的行,所以grep的pipe道永远不会closures。

如果从tail忽略-f ,则立即显示输出:

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

@EdMorton当然是对的。 Awk也可以searchA1 ,这缩短了命令行

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

或没有尾巴,显示所有包含A1行的最后一列

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

你可以做到这一点没有awk只有一些pipe道。

tac文件| grep -m1 A1 | rev | 切-d''-f1 | 转

一种使用awk

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

要打印行的最后一列,只需使用$(NF):

 awk '{print $(NF)}' 

你可以在awk完成所有的工作:

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

也许这个作品?

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

在文件上执行此操作:

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

你会得到你想要的。

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

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