2016-11-07 42 views
2

我使用varnishlog命令,并试图筛选某些字段:如果我用另一个grep命令我得到空的结果使用两个管道给空结果

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

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

现在:

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 
+0

尝试将第一个grep模式包装到括号中。像这样:'(ReqURL | Varnish-Cache)'。也UNIX版本和varnishlog -c输出的一部分将是非常有帮助 – sotona

+0

你可以尝试-u无缓冲输出。像varnishlog -cu ... –

+0

@sotona,我试过使用括号,但同样的问题。我用命令的输出样本更新了我的帖子。 – user3181365

回答

3

可以使用与如下面的grep --line缓冲选项;

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

man grep;

- 行缓冲 对输出使用行缓冲。这可能会导致性能损失。

+0

你可以请检查我的其他帖子 - http://stackoverflow.com/questions/40462153/grep-multiple-strings-and-then-replace-text答案是由伊恩给出的,有类似的问题,但使用的命令有' awk'和'sed'与wile循环 – user3181365

相关问题