为什么两次使用grep时都没有显示输出?

| 基本上,我想知道为什么它不输出任何内容:
tail --follow=name file.txt | grep something | grep something_else 
您可以假设它应该产生输出,我已经运行另一行来确认
cat file.txt | grep something | grep something_else
似乎您无法多次传送尾巴的输出!有人知道这笔交易是什么,有解决方案吗? 编辑: 到目前为止,要回答这些问题,该文件肯定具有应由grep显示的内容。作为grep是否这样做的证据:
tail --follow=name file.txt | grep something
输出正确显示,但是如果使用它代替:
tail --follow=name file.txt | grep something | grep something
没有输出显示。 如果真的有帮助,我正在运行ubuntu 10.04     
已邀请:
在管道中时,您可能还会遇到grep缓冲问题。 即,您看不到来自的输出
   tail --follow=name file.txt | grep something > output.txt
因为grep会缓冲自己的输出。 对grep使用--line-buffered开关可解决此问题:
tail --follow=name file.txt | grep --line-buffered something > output.txt
如果您希望尽快将以下结果放入output.txt文件中,这将很有用。     
弄清楚这里发生了什么。事实证明,该命令正在起作用,只是输出需要很长时间才能到达控制台(在我的情况下约为120秒)。这是因为标准输出上的缓冲区不是写入每一行,而是写入每个块。因此,与其从写入时获取文件的每一行开始,我每两分钟左右就会得到一个巨大的块。 应该注意,这可以正常工作:
tail file.txt | grep something | grep something
有问题的是带有“ 7”的文件的以下内容。 出于我的目的,我找到了解决方法,我打算将第一个grep的输出捕获到文件中,因此命令如下:
tail --follow=name file.txt | grep something > output.txt
一种解决方法是使用
script
命令,如下所示:
script -c \'tail --follow=name file.txt | grep something\' output.txt
脚本捕获命令的输出并将其写入文件,从而避免了第二条管道。 对于我来说,这有效地解决了该问题,并且我已经解释了为什么该命令没有按我预期的那样工作,问题得以解决。 仅供参考,这些其他stackoverflow问题相关: 诱使应用程序认为其标准输入是交互式的,而不是管道 强制使用Python取消缓冲另一个程序的标准输出     
您是否知道ѭ11默认情况下以文件的最后十行开始?我的猜测是找到的
cat
版本已成为过去。尝试ѭ13从文件开头开始。     
在没有ѭ7的Mac上对我有效
bash-3.2$ tail delme.txt | grep po
position.bin
position.lrn
bash-3.2$ tail delme.txt | grep po | grep lr
position.lrn
    
grep模式文件名| grep模式| grep模式| grep模式......     

要回复问题请先登录注册