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

2024-03-15

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

该文件看起来像这样。随着时间的推移,将会添加更多 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表示等待更多输入,但没有更多行file所以管道到grep永远不会关闭。

如果你省略-f from tail输出立即显示:

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

@EdMorton 当然是对的。Awk http://www.gnu.org/software/gawk/manual/html_node/index.html可以搜索A1这也将命令行缩短为

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

或没有尾部,显示包含以下内容的所有行的最后一列A1

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

感谢@MitchellTracy 的评论,tail http://man7.org/linux/man-pages/man1/tail.1.html可能会错过包含以下内容的记录A1因此你根本没有得到任何输出。这个问题可以通过切换来解决tail and awk,首先搜索文件,然后才显示最后一行:

awk '/A1/ {print $NF}' file | tail -n1
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

打印文件中一行的最后一列 的相关文章

随机推荐