当执行喜欢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 分钟后)有输出。这里有更详细的解释
为什么空格字符会影响输出之间的时间仍然是一个谜,但是按照该链接中的问题解决了它。
基本上我编辑了我的.bashrc
alias grep="grep --color=auto --line-buffered"
现在我得到了所需的输出。