繁体   English   中英

解析日志文件

[英]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

您可以在这里训练regex: https//regex101.com/

我懂了

] [0-9]* 

而且您必须删除前两个字符

您可以使用类似的解决方案:

(\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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM