如何'grep'连续的流?

可以在连续流上使用grep吗?

我的意思是排序一个tail -f <file>命令,但是在输出中使用grep来保留只有我感兴趣的行。

我试过tail -f <file> | grep pattern tail -f <file> | grep pattern但似乎grep只能在tail完成时执行,也就是说永远不会执行。


使用BSD grep(FreeBSD,Mac OS X等)时,打开grep的行缓冲模式。

tail -f file | grep --line-buffered my_pattern

您不需要为GNU grep(几乎在任何Linux上使用)执行此操作,因为默认情况下它会刷新(YMMV用于其他类Unix,如SmartOS,AIX或QNX)。


我使用tail -f <file> | grep <pattern> tail -f <file> | grep <pattern>

它会等到grep刷新,直到完成(我使用的是Ubuntu)。


我认为你的问题是grep使用了一些输出缓冲。 尝试

tail -f file | stdbuf -o0 grep my_pattern

它会将grep的输出缓冲模式设置为无缓冲。

链接地址: http://www.djcxy.com/p/74311.html

上一篇: How to 'grep' a continuous stream?

下一篇: Grep list filename and line number