一尘不染

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

linux

基本上我想知道为什么它什么都不输出:

tail --follow=name file.txt | grep something | grep something_else

您可以假设它应该产生输出,我已经运行另一行来确认

cat file.txt | grep something | grep something_else

看来您不能多次通过管道传递tail的输出!有人知道这笔交易是什么,有解决方案吗?

编辑:到目前为止,要回答问题,该文件肯定具有应由grep显示的内容。作为grep是否这样做的证据:

tail --follow=name file.txt | grep something

输出正确显示,但是如果使用它代替:

tail --follow=name file.txt | grep something | grep something

没有输出显示。

如果真的有帮助,我正在运行ubuntu 10.04


阅读 872

收藏
2020-06-02

共1个答案

一尘不染

在管道中时,您可能还会遇到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文件中,这将很有用。

2020-06-02