我正努力使splunk可以使用正则表达式。它可以与regex 101一起使用,但是splunk似乎无法识别它!
正则表达式: \"([\w]+)\":([^,}]+)
日志条目:
May 20 12:22:21 127.0.0.1 {"rootId": "AXIxikL8ao-yaSvA", "requestId": "f6a873jkjjkjk:-8000:5738",
"details": {"flag": false, "title": "task 1", "status": "Waiting", "group": "", "order": 0},
"operation": "Creation", "objectId": "AXIyCN5Oao-H5aYyaSvd", "startDate": 1589977341890,
"objectType": "case_task", "base": true, "object": {"_routing": "AXIxikL8ao-H5aYyaSvA", "flag":
false, "_type": "case_task", "title": "task 1", "createdAt": 1589977341516, "_parent": "AXIxikL8ao-
H5aYyaSvA", "createdBy": "user", "_id": "AXIyCN5Oao-H5aYyaSvd", "id": "AXIyCN5Oao-H5aYyaSvd",
"_version": 1, "order": 0, "status": "Waiting", "group": ""}}
正则表达式101链接: https://regex101.com/r/XBuz9Y/2/
我怀疑splunk可能具有不同的regex语法,但是我真的不知道如何适应它。
有帮助吗?
谢谢!
答案 0 :(得分:1)
您可以使用
... | rex max_match=0 "\"(?<key>\w+)\":(?<value>[^,}]+)"
在这里,max_match=0
将启用多次匹配(默认情况下,如果您不使用max_match
参数,则仅返回第一个匹配项)和{{3} }(请参见(?<key>...)
和(?<value>...)
)将确保创建字段。
答案 1 :(得分:0)
使用rex
获取事件的JSON片段,然后使用spath
进行提取。
rex field=_raw "^[^{]+(?<json>.*)" | spath input=json
这应该提取具有适当结构的JSON字段。