2012-12-13 52 views
16

具有典型的Apache訪問日誌去,你可以運行:管道尾部輸出雖然grep的兩倍

tail -f access_log | grep "127.0.0.1" 

它將只顯示你指定的IP地址的記錄(因爲它們是創建)。

但是,爲什麼當您通過grep再次對其進行管道操作時會失敗,以進一步限制結果?

例如,一個簡單的排除 「的.css」:

tail -f access_log | grep "127.0.0.1" | grep -v ".css" 

不會顯示任何輸出。

+0

參見[尾巴上雙-f的grep沒有給出輸出(HTTP: //unix.stackexchange.com/a/164681/20661) – rubo77

回答

10

這是緩衝的結果,當有足夠的數據可用時,它最終會打印。

通過肖恩·奇的建議,或者如果stdbuf可用,你可以得到同樣的效果使用--line-buffered選項:

tail -f access_log | stdbuf -oL grep "127.0.0.1" | grep -v ".css" 
+0

謝謝Thor,你也是對的,但我認爲Shawn就在你面前。 –