繁体   English   中英

grok 正则表达式模式匹配

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

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