技术头条 - 一个快速在微博传播文章的方式     搜索本站
您现在的位置首页 --> 系统运维 --> grep awk 之buffer问题

grep awk 之buffer问题

浏览:1280次  出处信息

问题

   如下命令可以看到我们预期的输出:

while :; do echo abcd; sleep 1; done|grep abcd

   如下命令不能看到预期的输出: (不是立即看到,其实,只要等等她就会来)

while :; do echo abcd; sleep 1; done|grep abcd|grep abcd

   原因: 第一个grep命令buffer了输出

   解决办法: 添加 -line-buffered 选项

   同样, awk 也有类似问题,但是使用awk就没有添加选项这么幸运了;可以通过在awk的输出后面添加 system(“”); 来刷新buffer,如:

# while :; do echo abcd; sleep 1; done|awk '{print $0;system("");}'|awk '{print $0;}'

   参考资料: http://unix.stackexchange.com/questions/33650/why-does-awk-do-full-buffering-when-reading-from-a-pipe

建议继续学习:

  1. Linux命令行里的“瑞士军刀”    (阅读:9858)
  2. AWK 简明教程    (阅读:7994)
  3. Buffer和cache的区别是什么?    (阅读:6724)
  4. awk命令,实现文件的合并与拆分    (阅读:6447)
  5. Linux grep命令用法    (阅读:5887)
  6. AWK介绍    (阅读:5354)
  7. Linux操作系统中内存buffer和cache的区别    (阅读:5233)
  8. 更快的IP库查找方法以及AWK中的二分查找    (阅读:5085)
  9. awk 实例之二维数组    (阅读:4920)
  10. grep 正则表达式选项要记得转义    (阅读:4913)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
© 2009 - 2024 by blogread.cn 微博:@IT技术博客大学习

京ICP备15002552号-1