Answers:
由于缓冲,您什么都看不到。当行数足够多或到达文件末尾时,将显示输出。tail -f
意味着要等待更多的输入,但是里面没有更多的行file
,因此连接到的管道grep
永远不会关闭。
如果-f
从tail
输出中忽略,则立即显示:
tail file | grep A1 | awk '{print $NF}'
@EdMorton当然是正确的。Awk也可以搜索A1
,从而将命令行缩短为
tail file | awk '/A1/ {print $NF}'
或不带尾巴,显示包含以下内容的所有行的最后一列 A1
awk '/A1/ {print $NF}' file
感谢@MitchellTracy的评论,tail
可能会错过包含的记录A1
,因此您根本没有输出。这可以通过切换tail
和来解决awk
,首先搜索文件,然后显示最后一行:
awk '/A1/ {print $NF}' file | tail -n1
tail
给您的窗口中。除非您知道它会以一定的频率出现,否则它会更安全awk '/A1/ {print $NF}' file | tail -n1
。
要打印一行的最后一列,只需使用$(NF):
awk '{print $(NF)}'
一种使用方式awk
:
tail -f file.txt | awk '/A1/ { print $NF }'
awk
的神秘语法:)
您可以只使用一些管道而无需awk来执行此操作。
tac file | grep -m1 A1 | rev | cut -d' ' -f1 | rev
您可以在中执行所有操作awk
:
<file awk '$1 ~ /A1/ {m=$NF} END {print m}'