[英]Logstash Grok pattern with multiple matches
我试图写一个grok表达式,它将导致多个匹配项。 我正在解析具有5个相同模式重复的行。
我已经能够使用正则表达式创建一个简单的模式,该模式将返回多个匹配项,但是Grok似乎无法正常工作。 我不太了解Ruby,所以还没有真正检查过代码。
输入示例:
222444555
图案:
(?<number>\d{3})*
我本来期望这样的输出:
"number" : [
[
"222", "444", "555"
]
]
或类似的东西。 在格罗克这可能吗? 我知道我可以将模式重复三次,但是在某些行上重复的次数是未知的。
有指针吗?
我采取了不同的方法。 我用grok提取了重复的部分行。 然后,我使用ruby {}
过滤器使用扫描功能将线切割成多个部分:
ruby {
code => "event.put('segment', event.get('segments').scan(/.{3}/))
}
效果很好,因为它在segment属性中创建了一个数组,然后在该字段上进行split {}
,我得到了想要的多个事件。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.