tail -f 通过 grep 进行管道传输,不输出到文件,而是输出到控制台

tail -f 通过 grep 进行管道传输,不输出到文件,而是输出到控制台

我正在使用以下命令

tail -f /mydir/myfile |  grep "searchterm" >> outfile

如果没有它,-f它可以正常工作,但是如果有了-f我需要的 ,则不会将任何内容写入文件。以下输出到控制台就好了

tail -f /mydir/myfile |  grep "searchterm"

我需要做什么才能让我的命令正确写入文件?

答案1

如果你有 GNUgrep:

tail -f /mydir/myfile |  grep --line-buffered "searchterm" >> outfile

这会写每一行,但会降低性能。

或者,等待更多输出。如果您要终止进程,只需终止该tail进程,缓冲区应在grep退出前刷新。

答案2

grep 是否缓冲了输出,使其看起来好像没有?尝试:

tail -f /mydir/myfile | grep --line-buffered "searchterm" >> outfile

相关内容