问题
如下命令可以看到我们预期的输出:
1 |
while :; do echo abcd; sleep 1; done|grep abcd |
如下命令不能看到预期的输出: (不是立即看到,其实,只要等等她就会来)
1 |
while :; do echo abcd; sleep 1; done|grep abcd|grep abcd |
原因: 第一个grep命令buffer了输出
解决办法: 添加 –line-buffered 选项
同样, awk 也有类似问题,但是使用awk就没有添加选项这么幸运了;可以通过在awk的输出后面添加 system(“”); 来刷新buffer,如:
1 |
# while :; do echo abcd; sleep 1; done|awk '{print $0;system("");}'|awk '{print $0;}' |