多次grep 没有看到输出

简介: tail -f xxx.log | grep aaaa | grep bbbb 发现没有日志输出 但log中的那条记录包含aaaa 和 bbbb,就是说tail  -f xxx.log | grep aaaa可以输出,tail -f xxx.log | grep bbbb可以输出   对日志记录做多次grep过滤输出,格式如下:tail -f log | grep xxx | grep yyy发现grep失效,无法做正确输出。
tail -f xxx.log | grep aaaa | grep bbbb 发现没有日志输出
但log中的那条记录包含aaaa 和 bbbb,就是说tail  -f xxx.log | grep aaaa可以输出,tail -f xxx.log | grep bbbb可以输出
 
对日志记录做多次grep过滤输出,格式如下:
tail -f log | grep xxx | grep yyy
发现grep失效,无法做正确输出。google研究了一下,原因如下:
管道 | 是全缓冲的,一般来说buffer_size为4096,有些是8192。不管具体值多少,只有buffer_size满了,才会看到输出。
在操作里  >>file 这个操作也是全缓冲的。调整如下
tail -f log | grep --line-buffer xxx | grep --line-buffer yyy
结果输出正常。
grep当带上了 --line-buffer 的时候,每输出一行,就刷新一次。
在unix里,块设备和普通文件,以及管道都是全缓冲的。
虽千万人,吾往矣!
目录
相关文章
|
2月前
|
Perl
在Awk中,直接通过文件作为输入
在Awk中,直接通过文件作为输入
28 2
|
2月前
|
Perl
sed打印特定行
sed打印特定行
43 4
|
2月前
|
Perl
grep的复杂用法
grep的复杂用法
15 3
|
2月前
|
Unix
grep的基本用法
grep的基本用法
19 2
[20180312]iostat显示输出问题.txt
[20180312]iostat显示输出问题.txt --//别人问的问题,使用iostat诊断分析磁盘io. --//如果这样过滤丢失了开头:Device:         rrqm/s   wrqm/s   r/s   w/s    rkB/s    wkB/...
844 0
|
机器学习/深度学习 Shell