簡體   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