服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

Linux|Centos|Ubuntu|系统进程|Fedora|注册表|Bios|Solaris|Windows7|Windows10|Windows11|windows server|

服务器之家 - 服务器系统 - Linux - 关于Grep的多次管道过滤的问题及解决

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

2023-03-09 17:15技术小黑屋 Linux

这篇文章主要介绍了关于Grep的多次管道过滤的问题及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

Grep的多次管道过滤问题

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

  • crazy.log 是某个进程不断输出日志的文件
  • 我们使用tail -f crazy.log来检测日志的产生
  • 我们在前面的基础上利用管道增加一层过滤筛选感兴趣的内容。
?
1
2
3
4
5
6
7
8
9
10
11
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

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

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

如何解决

?
1
2
3
4
5
6
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过滤没有内容,因为没有达到块缓冲限制。

以上。

总结

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

原文链接:https://blog.csdn.net/androidyue/article/details/106545412

延伸 · 阅读

精彩推荐
  • LinuxLinux ACL基本概念及典型用法

    Linux ACL基本概念及典型用法

    下面小编就为大家分享一下Linux ACL基本概念及典型用法;希望对大家学习ACL会有帮助;有需要的朋友可以过来看看...

    Linux之家4962019-06-10
  • LinuxLinux系统Vim编辑器如何安装YouCompleteMe插件?

    Linux系统Vim编辑器如何安装YouCompleteMe插件?

    Linux系统中想要让Vim编辑器发挥更大的作用,就要对它安装一些插件,比如说YouCompleteMe插件,本文就来介绍Linux系统Vim如何安装YouCompleteMe插件的相关内容...

    服务器之家3072019-09-04
  • Linux四大妙招让新手逐渐掌握linux系统维护

    四大妙招让新手逐渐掌握linux系统维护

    对于服务器系统来说,Linux服务器相对来说比Windwos服务器要稳定与安全。但是对于新手而言,稳定安全的Linux服务器仍需要合理及时的维护工作。 ...

    Linux教程网5022020-01-05
  • Linuxlinux下安装jira详细步骤

    linux下安装jira详细步骤

    首先从官网下载jdk的安装包,将jdk的安装包上传到虚拟机或者服务器,在、/usr/local/目录下面创建一个java目录:mkdir java 等等,具体祥看本文,希望对你有...

    Linux教程网12442019-12-02
  • LinuxLinux下几种运行后台任务的方法

    Linux下几种运行后台任务的方法

    今天就给大家介绍linux中几种后台任务的执行方法避免上述问题。...

    良许Linux11832022-01-10
  • Linux详解linux安装软件的几种方法

    详解linux安装软件的几种方法

    这篇文章主要介绍了linux安装软件的几种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随...

    CJ_喵小懒4922022-09-01
  • LinuxLinux 下安装pip包的方法

    Linux 下安装pip包的方法

    这篇文章主要介绍了Linux 下安装pip包的方法,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下...

    Crista3702019-08-28
  • LinuxLinux系统个性化登录提示信息的方法

    Linux系统个性化登录提示信息的方法

    这篇文章主要介绍了Linux系统个性化登录提示信息的方法,本文给出了实现代码和效果图片,需要的朋友可以参考下 ...

    Linux教程网4552019-10-26