我的日志文件采用键值格式。我想在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
答案 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