關(guān)于Grep的多次管道過(guò)濾的問(wèn)題及解決
Grep的多次管道過(guò)濾問(wèn)題
在日常的開發(fā)過(guò)程中,我們利用grep可以方便快捷的查找感興趣的日志內(nèi)容,極大地提升了開發(fā)和排錯(cuò)效率。但是有時(shí)候,我們也會(huì)遇到一些問(wèn)題,比如。
- crazy.log 是某個(gè)進(jìn)程不斷輸出日志的文件
- 我們使用tail -f crazy.log來(lái)檢測(cè)日志的產(chǎn)生
- 我們?cè)谇懊娴幕A(chǔ)上利用管道增加一層過(guò)濾篩選感興趣的內(nèi)容。
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
那么當(dāng)我們?cè)俅卧黾右粋€(gè)過(guò)濾是,卻沒(méi)有內(nèi)容(立即)產(chǎn)生了
? /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的選項(xiàng)--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.
上面的意思是
- 強(qiáng)制輸出結(jié)果使用行緩沖
- 默認(rèn)情況下,如果標(biāo)準(zhǔn)輸入時(shí)終端,則使用line bufferred
- 否則,使用塊緩沖,(默認(rèn)的大小為4096 bytes,因系統(tǒng)和配置而異)
所以,這也就解釋了為什么雙重grep過(guò)濾沒(méi)有內(nèi)容,因?yàn)闆](méi)有達(dá)到塊緩沖限制。
以上。
總結(jié)
這些僅為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Centos7.3安裝部署最新版Zabbix3.4的方法(圖文)
這篇文章主要介紹了Centos7.3安裝部署最新版Zabbix3.4的方法(圖文),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-03-03在APACHE環(huán)境下配置下載服務(wù)器的注意事項(xiàng)
這篇文章主要介紹了在APACHE環(huán)境下配置下載服務(wù)器的注意事項(xiàng),需要的朋友可以參考下2016-08-08CentOS(Linux)下的apache服務(wù)器配置與管理方法分享
CentOS(Linux)下的apache服務(wù)器配置與管理方法分享,需要的朋友可以參考下。2011-04-04ubuntu13.10編譯安裝mono環(huán)境(一)
Mono是一個(gè)自由開放源代碼項(xiàng)目。該項(xiàng)目的目標(biāo)是創(chuàng)建一系列符合ECMA標(biāo)準(zhǔn)的.NET工具,包括C#編譯器和通用語(yǔ)言架構(gòu)。Mono項(xiàng)目不僅可以運(yùn)行于Windows系統(tǒng)上,還可以運(yùn)行于Linux,F(xiàn)reeBSD,Unix,OS X和Solaris,甚至一些游戲平臺(tái),例如:Playstation 3,Wii或XBox 360。2014-07-07linux系統(tǒng)報(bào)tcp_mark_head_lost錯(cuò)誤的處理方法
這篇文章主要給大家介紹了關(guān)于linux系統(tǒng)報(bào)tcp_mark_head_lost錯(cuò)誤的處理方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用linux系統(tǒng)具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07