关于Grep的多次管道过滤的问题及解决
目录
- Grep的多次管道过滤问题
- 如何解决
- line-buffered 是什么
- 总结
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过滤没有内容,因为没有达到块缓冲限制。
以上。
总结
这些仅为个人经验,希望能给大家一个参考,也希望大家多多支持。
您可能感兴趣的文章
- 02-02hadoop动态增加和删除节点方法介绍
- 02-02干货 | Linux新手入门好书推荐
- 02-02linux系统下MongoDB单节点安装教程
- 02-02Linux下nginx生成日志自动切割的实现方法
- 02-02Centos 6中编译配置httpd2.4的多种方法详解
- 02-02CentOS7 下安装telnet服务的实现方法
- 02-02分布式Hibernate search详解
- 02-02Hadoop对文本文件的快速全局排序实现方法及分析
- 02-02CentOS6.3添加nginx系统服务的实例详解
- 02-02Hadoop编程基于MR程序实现倒排索引示例


阅读排行
推荐教程
- 12-07Tomcat启动报错:严重: Unable to process Jar entry [m
- 12-07解决tomcat启动报错:一个或多个listeners启动失败问题
- 12-07一文教你怎么选择Tomcat对应的JDK版本
- 12-07Tomcat配置IPV6的实现步骤
- 12-07tomcat启动报错jar not loaded的问题
- 02-02CentOS7 下安装telnet服务的实现方法
- 12-11docker存储目录迁移示例教程
- 12-15Docker-Compose搭建Spark集群的实现方法
- 12-07Tomcat部署war包并成功访问网页详细图文教程
- 01-07windows server 2008安装配置DNS服务器




