带空格的 Grep 突然不起作用

带空格的 Grep 突然不起作用

当执行喜欢grep时:

$ tail -f apilog_2014.07.09.log | grep "HELLO" | grep "99999"

我得到了所需的输出:

12:22:35 server apache2:  HELLO FRIEND 99999
12:22:35 server apache2:  HELLO FRIEND 99999
12:22:35 server apache2:  HELLO FRIEND 99999

但是如果我这样做:

$ tail -f apilog_2014.07.09.log | grep "HELLO FRIEND" | grep "99999"

我什么也没得到。

我的区域设置全部设置为en_US.utf8,并且我已经使用[[:space:]]和进行了测试\s。没有结果。文件本身是text/plain; charset=us-ascii(用 进行检查file -bi apilog_2014.07.09.log)。

文件本身是用 编写的rsyslog,如果这是任何类型的提示的话。使用Ubuntu 12.04.4 LTS

我有什么遗漏的吗?

按照要求:

$ grep "HELLO" apilog_2014.07.09.log | od -c
0000000   1   4   :   2   7   :   0   0       s   o   f   i   a       c
0000020   a   r   l   o   s   :           A   P   I   L   O   G       H
0000040   E   L   L   O       F   R   I   E   N   D       t   e   s   t
0000060   i   n   g  \n   1   4   :   3   1   :   4   5       s   o   f
0000100   i   a       c   a   r   l   o   s   :           A   P   I   L
0000120   O   G       H   E   L   L   O       F   R   I   E   N   D
0000140   t   e   s   t   i   n   g       6   3   9   0   3  \n
0000156

2014 年 7 月 14 日更新

在这里回答:带空格的 Grep 突然不起作用

相关问题(相同的解决方案):从 grep 到 awk 的管道无法正常工作

答案1

发现问题了。如果你还记得问题的开头,我主要是在做tail -f.当我说没有输出时我错了,我让控制台继续运行,最终(10 分钟后)有输出。这里有更详细的解释

http://www.ateamsystems.com/tech-blog/grep-output-is-delayed-or-no-output-when-piping-or-using-multiple-grep-calls-with-pipes/

为什么空格字符会影响输出之间的时间仍然是一个谜,但是按照该链接中的问题解决了它。

基本上我编辑了我的.bashrc

alias grep="grep --color=auto --line-buffered"

现在我得到了所需的输出。

相关内容