Macos 在Mac OS-X中将tail-f与多个Grep命令一起使用时没有输出
我正试图从Mac OS X终端执行以下命令:Macos 在Mac OS-X中将tail-f与多个Grep命令一起使用时没有输出,macos,bash,shell,Macos,Bash,Shell,我正试图从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 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完成并打印它们累积的任何输出(无论其缓冲区是否已填充)
将
--line buffered
添加到grep
命令会更改grep
缓冲其输出的方式,允许您在每行完成时查看输出。您是否尝试将--line buffered
添加到grep
s.tail-f post-mortem|u FILE|grep--line buffered“所需_字符串”中| grep--行缓冲-v“EXCLUDED_STRING”按预期工作!