关于Grep的多次管道过滤的问题及解决

 更新时间:2023年03月07日 09:50:19   作者:技术小黑屋  
这篇文章主要介绍了关于Grep的多次管道过滤的问题及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

Grep的多次管道过滤问题

在日常的开发过程中,我们利用grep可以方便快捷的查找感兴趣的日志内容,极大地提升了开发和排错效率。但是有时候,我们也会遇到一些问题,比如。

  • crazy.log 是某个进程不断输出日志的文件
  • 我们使用tail -f crazy.log来检测日志的产生
  • 我们在前面的基础上利用管道增加一层过滤筛选感兴趣的内容。
tail -f crazy.log | grep Hello
Hello,printting from Ruby
Hello,Time is 1566096393
Hello,printting from Ruby
Hello,Time is 1566096393
Hello,printting from Ruby
Hello,Time is 1566096393
Hello,printting from Ruby
Hello,Time is 1566096393
Hello,printting from Ruby
Hello,Time is 1566096393

那么当我们再次增加一个过滤是,却没有内容(立即)产生了

➜ /tmp tail -f crazy.log | grep Hello | grep Time

如何解决

tail -f crazy.log | grep --line-buffered Hello | grep Time
Hello,Time is 1566096393
Hello,Time is 1566096393
Hello,Time is 1566096393
Hello,Time is 1566096393
Hello,Time is 1566096393

如上,我们使用grep的选项--line-buffered即可。

line-buffered 是什么

--line-buffered
         Force output to be line buffered.  By default, output is line buffered when standard output is
         a terminal and block buffered otherwise.

上面的意思是

  • 强制输出结果使用行缓冲
  • 默认情况下,如果标准输入时终端,则使用line bufferred
  • 否则,使用块缓冲,(默认的大小为4096 bytes,因系统和配置而异)

所以,这也就解释了为什么双重grep过滤没有内容,因为没有达到块缓冲限制。

以上。

总结

这些仅为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • linux配置ISCSI服务器的方法

    linux配置ISCSI服务器的方法

    下面小编就为大家带来一篇linux配置ISCSI服务器的方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-12-12
  • Django在Ubuntu14.04的部署方法

    Django在Ubuntu14.04的部署方法

    下面小编就为大家带来一篇Django在Ubuntu14.04的部署方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-07-07
  • SpringBoot + Vue 项目部署上线到Linux 服务器的教程详解

    SpringBoot + Vue 项目部署上线到Linux 服务器的教程详解

    这篇文章主要介绍了SpringBoot + Vue 项目部署上线到Linux 服务器,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-08-08
  • Linux文件删除后空间未释放问题详解

    Linux文件删除后空间未释放问题详解

    这篇文章主要给大家介绍了关于Linux文件删除后空间未释放问题的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Linux具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2020-05-05
  • Linux 添加永久静态路由的方法

    Linux 添加永久静态路由的方法

    本篇文章主要介绍了Linux 添加永久静态路由的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-02-02
  • Linux使用Crontab定时访问某个路由地址的方法

    Linux使用Crontab定时访问某个路由地址的方法

    我们很多工作都是需要在某个特定的时间去执行它,下面这篇文章主要给大家介绍了关于Linux使用Crontab定时访问某个路由地址的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2018-06-06
  • Linux+php+apache+oracle环境搭建之CentOS下安装Oracle数据库

    Linux+php+apache+oracle环境搭建之CentOS下安装Oracle数据库

    研究了两天Linux下安装Oracle,重装了两次虚拟机,终于安装成功。很有收获的。记录下安装过程。大神们如有更好的方式,请联系我!
    2014-08-08
  • Linux部署jar包过程

    Linux部署jar包过程

    文章介绍了在Linux系统上部署Java(jar)包时需要注意的几个关键点,包括统一JDK版本、添加打包插件、修改数据库密码以及正确执行jar包的方法
    2025-02-02
  • Linux关于透明大页机制的介绍

    Linux关于透明大页机制的介绍

    这篇文章介绍了Linux中的透明大页机制,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-02-02
  • Linux上通过SSH挂载远程文件系统方法详解

    Linux上通过SSH挂载远程文件系统方法详解

    在本篇内容里小编给大家整理了关于在Linux上通过SSH挂载远程文件系统的相关知识点,需要的朋友们跟着学习下。
    2019-03-03

最新评论