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 来测试正则表达式。
我有一些日志文件,如下所示:
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 来测试正则表达式。