可以在连续流上grep
我的意思是有点tail -f <file>
命令,但是grep
以便仅保留我感兴趣的行。
我已经试过tail -f <file> | grep pattern
但似乎只能在tail
grep
,也就是说永远不会执行。
使用 BSD grep(FreeBSD,Mac OS X 等)时,请打开grep
tail -f file | grep --line-buffered my_pattern
看起来好像前一阵子--line-buffered
对于 GNU grep(几乎在任何 Linux 上使用)都无关紧要,因为它默认情况下会刷新(对于其他类似 Unix 的版本,例如 SmartOS,AIX 或 QNX,则为 YMMV)。但是,从 2020 年 11 月开始, --line-buffered
(至少在 openSUSE 中使用 GNU grep 3.5 时,但根据下面的注释,通常似乎需要)。
我使用tail -f <file> | grep <pattern>
一直都在。
它将等到 grep 刷新,而不是等到完成(我正在使用 Ubuntu)。
我认为您的问题是 grep 使用了一些输出缓冲。尝试
tail -f file | stdbuf -o0 grep my_pattern
它将 grep 的输出缓冲模式设置为 unbuffered。