【问题标题】:Using two pipes gives empty results使用两个管道会给出空结果
【发布时间】:2016-11-07 20:34:00
【问题描述】:

我正在使用 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

【问题讨论】:

  • 尝试将第一个 grep 模式包装到括号中。像这样:'(ReqURL|Varnish-Cache)'。 UNIX 版本和 varnishlog -c 输出的一部分也会很有帮助
  • 你可以试试 -u 无缓冲输出。像 varnishlog -cu ...
  • @sotona,我尝试使用括号,但同样的问题。我已经用命令的示例输出更新了我的帖子。
  • @MustafaDOGRU,I -u 标志不适用于 varnishlog 命令
  • 你可以使用 --line-buffered 选项 grep 像 grep --line-buffered ...

标签: unix grep varnish


【解决方案1】:

您可以将 --line-buffered 选项与 grep 一起使用,如下所示;

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

man grep ;

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

【讨论】:

猜你喜欢
  • 2022-01-13
  • 1970-01-01
  • 1970-01-01
  • 2012-06-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-22
  • 2017-06-29
相关资源
最近更新 更多