我有一个不断被写入/更新的文件。我想找到包含特定单词的最后一行,然后打印该行的最后一列。
该文件看起来像这样。随着时间的推移,将会添加更多 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(使用前将#替换为@)