使用两个管道会得到空的结果

时间:2016-11-07 11:31:22

标签: unix grep varnish

我正在使用varnishlog命令并尝试过滤某些字段:

sudo varnishlog -c  | grep -E 'ReqURL|Varnish-Cache'

-   ReqURL         /sample/2
-   RespHeader     X-Varnish-Cache: HIT
-   ReqURL         /sample/2
-   RespHeader     X-Varnish-Cache: HIT

现在,如果我使用另一个grep命令,我会得到空结果:

sudo varnishlog -c  | grep -E 'ReqURL|Varnish-Cache' | grep 'HIT'

你能帮我解决一下这里的问题吗?

命令的示例输出:sudo varnishlog -c

*   << Request  >> 658516
-   Begin          req 658515 rxreq
-   Timestamp      Start: 1478508065.780332 0.000000 0.000000
-   Timestamp      Req: 1478508065.780332 0.000000 0.000000
-   ReqStart       10.56.36.2 55578
-   ReqMethod      GET
-   ReqURL         /sample/2
-   ReqProtocol    HTTP/1.1
-   ReqHeader      Host: localhost:6081
-   ReqHeader      User-Agent: Mozilla/5.0 Firefox/44.0
-   ReqHeader      Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
-   ReqHeader      Accept-Language: en-US,en;q=0.5
-   ReqHeader      Accept-Encoding: gzip, deflate
-   ReqHeader      Connection: keep-alive
-   ReqHeader      Pragma: no-cache
-   ReqHeader      Cache-Control: no-cache
-   VCL_call       RECV
-   VCL_return     hash
-   ReqUnset       Accept-Encoding: gzip, deflate
-   ReqHeader      Accept-Encoding: gzip
-   VCL_call       HASH
-   VCL_return     lookup
-   Hit            658416
-   VCL_call       HIT
-   VCL_return     deliver
-   RespProtocol   HTTP/1.1
-   RespStatus     200
-   RespReason     OK
-   RespHeader     Content-Length: 4774
-   RespHeader     Last-Modified: Tue, 12 Apr 2016 17:42:58 GMT
-   RespHeader     Etag: f9d34a65e8c1b30245c2f12534348ff9
-   RespHeader     X-Timestamp: 1460482977.61998
-   RespHeader     Content-Type: image/png
-   RespHeader     X-Trans-Id: txf52283ea65004e578ddfe-0058203d84
-   RespHeader     Date: Mon, 07 Nov 2016 08:38:28 GMT
-   RespHeader     X-Varnish: 658516 658416
-   RespHeader     Age: 157
-   RespHeader     Via: 1.1 varnish-v4
-   VCL_call       DELIVER
-   RespHeader     X-Varnish-Cache: HIT
-   VCL_return     deliver
-   Timestamp      Process: 1478508065.780379 0.000047 0.000047
-   RespHeader     Accept-Ranges: bytes
-   Debug          "RES_MODE 2"
-   RespHeader     Connection: keep-alive
-   Timestamp      Resp: 1478508065.780411 0.000079 0.000032
-   ReqAcct        415 0 415 393 4774 5167

1 个答案:

答案 0 :(得分:3)

你可以使用grep的--line-buffered选项,如下所示;

sudo varnishlog -c | grep --line-buffered -E 'ReqURL|Varnish-Cache' | grep --line-buffered 'HIT'

man grep;

  

- 行缓冲             在输出上使用行缓冲。这可能会导致性能下降。