Splunk:如何使用正则表达式直接在搜索命令中提取字段?

Splunk: How to extract field directly in Search command using regular expressions?

我有一些日志文件,如下所示:

2020-11-18 00:11:22.333 信息 [ABC_service,[{"method":"doSomething","id":"123456789","jsonrpc ":"2.0","params":{"taskType":"certainType","clientNotificationInfo":{"priority":xy,"expirationDate":111111111},"priority":xy,"deviceId":"000000000000000" "taskPayload":{},"timeout":22222222}}, XYZ]

我现在想直接在我的搜索中提取字段并制作提取值的 table。我想在此处提取任务类型:certainType。现在,我想知道如何做到这一点。

我试过这个命令:

source="/log/ABCDE/ABCDE_service.log" doSomething | rex field=_raw "taskType: (?<taskType>.*)"    | table  taskType

但是得到一个空 table。这里有什么问题?

但是我得到的两个值都是空的 table。

你的想法是对的,但是rex命令中的正则表达式与示例数据不匹配。试试这个。

source="/log/ABCDE/ABCDE_service.log" doSomething 
| rex field=_raw "taskType\\":\\"(?<taskType>[^\\"]+)"    
| table  taskType

将引号输入正则表达式处理器所需的多层转义需要额外的反斜杠。

顺便说一句,我喜欢用 regex101.com 来测试正则表达式。