我正在尝试从Mac OS X终端执行以下命令:
$tail -f FILE_PATH | grep "DESIRED_STRING" | grep -v "EXCLUDED_STRING"
不幸的是,我没有得到任何回报。
但是,当使用cat
而不是时tail -f
:
$cat FILE_PATH | grep "DESIRED_STRING" | grep -v "EXCLUDED_STRING"
我得到了预期的结果。不幸的是,这种解决方法对我不利,因为我需要实时跟踪文件。
grep
默认情况下缓冲其输出。由于tail -f
永远不会完成,因此两者都不会完成,grep
您必须等到最后一个累积足够的输出以填充其缓冲区为止。使用cat
,该命令最终完成,从而允许grep
s和s都完成并打印它们所累积的任何输出(无论是否已填充其缓冲区)。
添加--line-buffered
到grep
命令将更改grep
缓冲其输出的方式,使您可以在每行完成时查看输出。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句