IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

grep awk 之buffer问题

PHPor 的Blog 2015-04-26 22:55:40 累计浏览 2,627 次
本机暂存

问题

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

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. 等了十年的 Go 链式管道,终于来了:seq 让你像写 Scala 一样写 Go (2026-06-25 18:38:18)
  2. Go 实验特性详解 (2026-06-21 10:05:27)
  3. amd64 微架构级别对 Go 程序性能提升多少? (2026-06-21 09:38:49)

查看更多 后端 文章 →

建议继续学习

  1. 28个Unix/Linux的命令行神器 (累计阅读 16,791)
  2. Linux如何统计进程的CPU利用率 (累计阅读 16,307)
  3. 我的 RHCA 之路 (累计阅读 14,013)
  4. Linux内存点滴 用户进程内存空间 (累计阅读 13,229)
  5. 给程序员新手的一些建议 (累计阅读 13,089)
  6. Linux 性能监控、测试、优化工具 (累计阅读 13,011)
  7. 关于linux内存free的一些事情 (累计阅读 12,867)
  8. ps - 按进程消耗内存多少排序 (累计阅读 12,687)
  9. Google怎么用linux (累计阅读 12,581)
  10. Linux Used内存到底哪里去了? (累计阅读 11,867)