[英]grok regex pattern matching
我想为此找到 grok 模式:
INFO: 200000 packets. Current packet is class com.navtech.kernel.flat.FlatCombo [Loader] [tstamp: 1866 time: 1851.4 (30:51) split: 03.2] [Memory: 3.320G total: 22.20G free: 18.88G]
我试过了
\A(?:%{LOGLEVEL:level})%{GREEDYDATA:message}\s(?:%{JAVACLASS:caller_class})\s+(\[%{WORD:loglevel}\]\s+)+(\[%{DATA:ts}\]\s+)+(\[%{DATA:mem}\])
但现在我缺少的是提取“内存:”和“总计:”那么我将如何为此编写正则表达式?
您可以使用
^(?:%{LOGLEVEL:level}):\s*%{DATA:message}\s*(?:%{JAVACLASS:caller_class})\s+\[%{WORD:loglevel}\]\s+(\[%{DATA:ts}\]\s+)+(\[\s*\S+\s+%{BASE10NUM:memory}\S*\s+\S+\s+%{BASE10NUM:total}.*?\])
其中%{DATA:mem}
替换为\\s*\\S+\\s+%{BASE10NUM:memory}\\S*\\s+\\S+\\s+%{BASE10NUM:total}.*?
:
\\s*\\S+\\s+
- 0+ 个空格,1+ 个除空格以外的字符和 1+ 个空格(我们正在跳过Memory:
)%{BASE10NUM:memory}\\S*
- 由数字+数字后的零个或多个非空白符号组成的内存值\\s+\\S+\\s+
- 1+ 个空格,1+ 个除空格以外的字符和 1+ 个空格(我们跳过total:
:)%{BASE10NUM:total}
- total
值,该值是一个数.*?
- 任何 0+ 个字符直到第一个]
看测试画面:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.