打印文件中一行的最后一列
我有一个不断被写入/更新的文件。 我想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