關(guān)于Grep的多次管道過濾的問題及解決
Grep的多次管道過濾問題
在日常的開發(fā)過程中,我們利用grep可以方便快捷的查找感興趣的日志內(nèi)容,極大地提升了開發(fā)和排錯(cuò)效率。但是有時(shí)候,我們也會(huì)遇到一些問題,比如。
- crazy.log 是某個(gè)進(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)我們再次增加一個(gè)過濾是,卻沒有內(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過濾沒有內(nèi)容,因?yàn)闆]有達(dá)到塊緩沖限制。
以上。
總結(jié)
這些僅為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
SpringBoot + Vue 項(xiàng)目部署上線到Linux 服務(wù)器的教程詳解
這篇文章主要介紹了SpringBoot + Vue 項(xiàng)目部署上線到Linux 服務(wù)器,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-08-08
Linux使用Crontab定時(shí)訪問某個(gè)路由地址的方法
我們很多工作都是需要在某個(gè)特定的時(shí)間去執(zhí)行它,下面這篇文章主要給大家介紹了關(guān)于Linux使用Crontab定時(shí)訪問某個(gè)路由地址的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2018-06-06
Linux+php+apache+oracle環(huán)境搭建之CentOS下安裝Oracle數(shù)據(jù)庫
研究了兩天Linux下安裝Oracle,重裝了兩次虛擬機(jī),終于安裝成功。很有收獲的。記錄下安裝過程。大神們?nèi)缬懈玫姆绞?,請?lián)系我!2014-08-08
Linux上通過SSH掛載遠(yuǎn)程文件系統(tǒng)方法詳解
在本篇內(nèi)容里小編給大家整理了關(guān)于在Linux上通過SSH掛載遠(yuǎn)程文件系統(tǒng)的相關(guān)知識(shí)點(diǎn),需要的朋友們跟著學(xué)習(xí)下。2019-03-03

