Splunk正则表达式:如何提取两个已知单词间的目标字段
解决Splunk正则提取device-group名称的问题
你需要从字段M中提取device-group: 与 succeeded.之间的字符串,之前使用的正则表达式完全不符合需求,因此无法得到正确结果。
正确的Splunk rex命令
针对你的需求,使用以下命令即可完成提取:
|rex field=M "device-group:\s(?<device_group>[^\s]+)\s succeeded\."
说明
field=M指定要处理的目标字段为M(若该字段是搜索结果中的默认_raw字段,可省略此参数)device-group:\s精准匹配固定字符串device-group:(注意字符串后的空格)(?<device_group>[^\s]+)定义一个名为device_group的捕获字段,[^\s]+表示匹配任意非空白字符,完全适配你示例中的device-group名称格式\s succeeded\.匹配目标内容后的固定后缀succeeded.(空格和句号都需精准匹配,句号用反斜杠转义避免正则语法冲突)
如果后续遇到device-group名称包含空格的场景,可改用非贪婪匹配的通用写法:
|rex field=M "device-group:\s(?<device_group>.+?)\s succeeded\."
内容的提问来源于stack exchange,提问作者Patrick O'Rourke
相关产品推荐
相关产品推荐

