Linux中tail多次grep沒有顯示出預(yù)期結(jié)果

說明

grep 命令是 Linux 中的一個常用命令,用于從大量的文本中篩選自己關(guān)注的信息。
該命令的常用方式如下:

cat file.txt | grep something
tail -1000f file.txt | grep something

但是如果在 tail 指令中,有多個 grep 進(jìn)行多次篩選,實際存在要篩選的結(jié)果,卻沒有顯示出來。
例如下面的指令:

tail -1000f file.txt | grep something | grep something_else

解決方案

實際上,grep 命令正在起作用,只是輸出需要很長時間才能到達(dá)控制臺(有的時候需要幾分鐘)。這是因為標(biāo)準(zhǔn)輸出上的緩沖區(qū)不是每行寫入的,而是每個塊寫入的。因此,不會在編寫文件時從文件中獲取每一行,而是每 2 分鐘左右得到一個巨大的塊。
或者等到 tail 有更多的匹配結(jié)果后,一并按塊寫入。

方案一

將前一次的搜索結(jié)果輸出到文件中,再使用 grep 進(jìn)行搜索。

cat file.txt | grep something | grep something_else

方案二(推薦)

使用 grep 的 --line-buffered 按行緩沖開關(guān)來解決該問題。

tail -1000f file.txt | grep --line-buffered something | grep something_else
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容