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