[英]Parsing log file
我正在尝试从日志文件中解析这样的文本:
[2016-01-29 11:31:33,809:WARNING / Worker-1283] 1030140 ::: DEAL_OF_DAY ::: 29 ::: 1 ::: 11 [2016-01-29 11:31:34,103:WARNING / Worker -1197] 1025311 :::: DEAL_OF_DAY ::: 29 ::: 1 ::: 11 [2016-01-29 11:31:34,291:警告/工人1197] 1025158 ::: DEAL_OF_DAY ::: 29 :::: 1 ::: 11
我想提取这些数字1030140、1025311、1025158等。
我尝试了以下
cat deals29.txt | egrep -o '[0-9]+'
但这也给了其他数字
我试过了
cat deals29.txt | egrep -o ' [0-9]+:::'
但是现在它在输出中也提供了冒号,并且无法在grep的命令行版本中捕获该组。
有什么建议么? grep
解决方案将是首选,但如果grep无法胜任,我也可以使用sed / awk。
使用grep -oP
并匹配reset \\K
:
grep -oP '^\[.*?\] \K\d+' file.log
1030140
1025311
1025158
如果您的grep
不支持-P
(PCRE),请使用awk
:
awk -F '\\] |:::' '{print $2}' file.log
1030140
1025311
1025158
您可以使用类似的解决方案:
(\d{3,})::
# looks for at least 3 digits (or more) followed by two colons
# puts the matched numbers in group 1
在此处查看此方法的演示。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.