This question already has an answer here:
Read from a endless pipe bash [duplicate]
(1个答案)
四年前关闭。
我试图从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,命令最终完成,允许greps完成并打印它们累积的任何输出(无论其缓冲区是否已填满)。
--line-buffered命令添加grep将更改grep缓冲其输出的方式,允许您在每行完成时查看输出。

关于macos - 在Mac OS-X中将tail -f与多个Grep命令一起使用时无输出,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33758140/

10-11 22:46
查看更多