如何解决如何仅从多值字段中提取匹配字符串并在SPLUNK查询中显示在新列中
我正在尝试从多值字段中提取匹配的字符串并显示在另一列中。我尝试了各种选项,用定界符,mvexpand和用户where / search来拉取这些数据。我试图找到一种更简单的方法来执行此操作,而不会在SPLUNK查询中造成所有麻烦。
示例:假设我在多值column1字段下方,其数据用定界符逗号分隔
列1 = abc1,test1,test2,abctest1,邮件,发送,邮件2,sendtest2,新的,代码,结果
我正在使用定界符|eval column2=split(column1,",")
拆分此列,并使用regex / where / search在此列中使用*test*
搜索数据并返回结果,在这里我可以提取结果,但是column1仍然显示所有值abc1,test1,test2,abctest1,mail,send,mail2,sendtest2,new,code,results
,我想要的是修剪1 column1 以仅显示与test
匹配的单词或在新的 column2 中显示这些条目>应该仅显示此单词test1,sendtest2
,因为它们仅与*test*
匹配。
谢谢您的帮助。
解决方法
发布此问题后找到答案,只是使用退出的mvfilter函数提取匹配结果。
,column2 = mvfilter(match(column1,“ test”))
| eval column2=split(column1,",") | search column2="*test*"
不起作用,因为split
创建了一个多值字段,这是一个包含单个包含多个值的字段的事件。 search
的{{1}}仍然会找到该事件,即使它包含*test*
等,因为至少有一个字段为abc1
。
您可以使用*test*
命令来将多值字段的范围缩小到要处理的事件。
mvfilter
作为这种方法的替代,您可以使用正则表达式提取所需的内容。
| eval column2=split(column1,") | eval column2=mvfilter(match(column2,".*test.*"))
无论如何,最后都需要使用| rex field=column1 max_match=0 "(<?column2>[^,]*test[^,]*)"
将多个值连接到单个字符串中
mvjoin
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。