2011-03-14 87 views
3

我有一个活的日志文件名为log.log,想捕捉一些匹配模式和价值观在里面:tail -F log.log | grep ResponseTime |切-d = -f 2

举例: log.log正在增长,我们正在寻找该行有模式 “RESPONSETIME = VALUE”,我们要提取匹配的值:

我执行:

tail -F log.log | grep ResponseTime | cut -d = -f 2 | tr -d " " 

而且我期待看到

VALUE1 
VALUE2 
.. etc 

但它不工作...我该怎么办?

谢谢 南无

===========

谢谢你,现在的工作。我正在使用: inotail -f log.log | stdbuf -oL grep ResponseTime | stdbuf -oL cut -d'='-f 2 | stdbuf -oL TR -d “”

+0

什么是你看到的,而不是:

我会tail如后只使用一个命令? – 2011-03-14 06:30:22

+0

如果运行'cat log.log |会发生什么? grep ResponseTime | cut -d = -f 2 | tr -d“”'?我怀疑有些数据正在被缓存在流水线中,直到更多的数据被写入'log.log'文件(或EOF)之前它才会被刷新。 – srgerg 2011-03-14 06:35:32

回答

-2

如果你想删除输出中的新行,那么你可以在任何如下:

| cut -d = -f 2|sed -e :a -e '$!N;s/\n//;ta' 

| cut -d = -f 2|tr -d '\n' 

| cut -d = -f 2|awk '{printf "%s",$0}' 
1

它不工作的原因是某些命令不会在每个输出上刷新STDOUT。因此后面的命令永远不会被传递。

tail -F t.log | sed '/ResponseTime/!d;s/ResponseTime\s+=\s+(\d+)/\\1/'