关于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 Namespace之User

    详解Linux Namespace之User

    这篇文章主要介绍了详解Linux Namespace之User,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-09-09
  • Centos7.3安装部署最新版Zabbix3.4的方法(图文)

    Centos7.3安装部署最新版Zabbix3.4的方法(图文)

    这篇文章主要介绍了Centos7.3安装部署最新版Zabbix3.4的方法(图文),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-03-03
  • 在APACHE环境下配置下载服务器的注意事项

    在APACHE环境下配置下载服务器的注意事项

    这篇文章主要介绍了在APACHE环境下配置下载服务器的注意事项,需要的朋友可以参考下
    2016-08-08
  • Linux bzip2 命令的使用

    Linux bzip2 命令的使用

    这篇文章主要介绍了Linux bzip2 命令的使用,帮助大家更好的理解和使用Linux系统,感兴趣的朋友可以了解下
    2020-08-08
  • node+Express测试服务器性能

    node+Express测试服务器性能

    这篇文章介绍了使用node+Express测试服务器性能,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-12-12
  • CentOS(Linux)下的apache服务器配置与管理方法分享

    CentOS(Linux)下的apache服务器配置与管理方法分享

    CentOS(Linux)下的apache服务器配置与管理方法分享,需要的朋友可以参考下。
    2011-04-04
  • Linux之Centos8创建CA证书教程

    Linux之Centos8创建CA证书教程

    大家好,本篇文章主要讲的是Linux之Centos8创建CA证书教程,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览
    2021-12-12
  • linux下如何搭建文件共享服务器

    linux下如何搭建文件共享服务器

    这篇文章主要介绍了linux下如何搭建文件共享服务器问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-09-09
  • ubuntu13.10编译安装mono环境(一)

    ubuntu13.10编译安装mono环境(一)

    Mono是一个自由开放源代码项目。该项目的目标是创建一系列符合ECMA标准的.NET工具,包括C#编译器和通用语言架构。Mono项目不仅可以运行于Windows系统上,还可以运行于Linux,FreeBSD,Unix,OS X和Solaris,甚至一些游戏平台,例如:Playstation 3,Wii或XBox 360。
    2014-07-07
  • linux系统报tcp_mark_head_lost错误的处理方法

    linux系统报tcp_mark_head_lost错误的处理方法

    这篇文章主要给大家介绍了关于linux系统报tcp_mark_head_lost错误的处理方法,文中通过示例代码介绍的非常详细,对大家学习或者使用linux系统具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-07-07

最新评论