我想找到这个的grok表达式, 信息:200000个数据包。当前数据包是类com.navtech.kernel.flat.FlatCombo [Loader] [tstamp:1866时间:1851.4(30:51)分割:03.2] [内存:3.320G总计:22.20G免费:18.88G]
我试过
\ A(?:%{LOGLEVEL:水平})%{GREEDYDATA:消息} \ S(?:%{JAVACLASS:caller_class})\ S +([%{WORD:记录级}] \ S +)+([ %{DATA:TS}] \ S +)+([%{DATA:MEM}])
但现在我缺少的是提取“Memory:”和“total:”,那么我将如何编写正则表达式呢?
答案 0 :(得分:0)
您可以使用
^(?:%{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个字符,直到第一个]
参见测试屏幕: