如何在tail -f上找到一个键的值

时间:2016-12-23 13:03:43

标签: bash shell ubuntu sed grep

我的日志文件采用键值格式。我想在tail -f上找到特定键的值。 假设日志中的一行是:

ts=2016-12-23-18-31-34-849 | deviceType=LENOVO Lenovo A6000 | elapsed=11 | firstHomePage=null | installId=37797b61-0bb1-4c1a-844c-5904c7e83de8 | ip=157.48.104.146 
ts=2016-12-23-18-31-34-849 | deviceType=LENOVO Lenovo A6000 | elapsed=15 | firstHomePage=null | installId=37797b61-0bb1-4c1a-844c-5904c7e83de8 | ip=157.48.104.146 

我不知道如何管道我的尾部输出-f以便输出应该跟随

11
15

3 个答案:

答案 0 :(得分:2)

尝试grep

tail log_file | grep -o '\<elapsed=[^[:space:]]*' | cut -d= -f2

答案 1 :(得分:2)

使用GNU grep--line-buffered命令缓冲stdout,以防文件持续增长。 -o标记仅用于匹配模式,-P用于启用perl样式regEx捕获。

tail -f file | grep --line-buffered -oP "elapsed=\K(\d+)"
11
15

man grep页面

--line-buffered
         Use line buffering on output.

答案 2 :(得分:0)

awk -F'[=|]' '{print $6}' file
11 
15