将tail -f与grep结合使用?


26

嗨,我想继续查看日志文件,但我也不想看到不相关的内容,我只对其中带有“ foobar”的内容感兴趣。

因此,如果我拖尾文件,我会做

 tail file | grep "foobar"

现在,我添加了-f选项,有没有办法以某种方式仅显示我想要的内容?使用grep或其他技术?


1
看来你的答案已经写在这里:stackoverflow.com/questions/5427483/...
uSlackr

1
似乎xyr答案在问题中。
JdeBP 2012年

Answers:


41

您几乎写下了答案,即:

tail -f file.log | grep "foobar"

而已。


1
哇,您是对的,我想我没想到这会起作用,但我仍然没想到,在命令完成执行后,管道不应该发生吗?我想这表明事实并非如此,它每次输出时都会发生,对吗?
user893730 2012年

3
不,它将并行启动两个程序,而第二个程序(grep)将在机尾的STDOUT关闭时退出。这就是管道,数据流的全部要点:)
Ravachol 2012年

4
grep是管道中的最后一行时,其输出将进行行缓冲,因此您可以看到tail -f实时的过滤输出,而不是延迟的输出。请注意,如果要使用多个grep命令,则通过管道传递输出的任何命令都将需要一个--line-buffered选项(假设使用GNU或BSD grep)以保持此行为。
ghoti
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.