首頁>Program>source

結合典型的Apache訪問日志,您可以執行:

tail -f access_log | grep "127.0.0.1"

只会顯示指定IP地址的日志(建立後)。

但是当您通過 grep用管道傳輸時為什麼会失败? 再次限製結果吗?

例如,一个簡單的排除為" .css":

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

不会顯示任何輸出。

最新回復
  • 5月前
    1 #

    我相信這裏的問题是,第一个grep正在緩衝輸出,這意味着第二个grep在重新整理緩衝區之前才看到它.

    尝試添加 --line-buffered 您的第一个grep上的選項:

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

    有關更多資訊,請參见" BashFAQ / 009-什麼是緩衝?或者,為什麼我的命令列不产生任何輸出: tail -f logfile | grep 'foo bar' | awk ... "

  • 5月前
    2 #

    這是緩衝的結果,当有足够的資料可用時,它將最终print出来。

    使用 --line-buffered Shawn Chin建議的選項,或者如果是 stdbuf 可以使您获得与以下效果相同的效果:

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

  • javascript:自動將引數設置為ES6中的例項屬性
  • javascript:在包含標簽的contenteditable div中获得插入符位置