我使用下面的rex表达式在我的原始数据中搜索以下字段:
地址线1地址线2地址线3地址线4和邮政编码
| rex "Address Line 1=(?<address1>[^,]*)" | rex "Address Line 2=(?<address2>[^,]*)" | rex "Address Line 3=(?<address3>[^,]*)" | rex "Address Line 4=(?<address4>[^,]*)" | rex "Postcode=(?<postcode>[^,]*)" |从表达式中可以看出,这些字段中的每个字段都被分配了一个变量,因此对于地址行1,变量是address1,地址行2是'address2‘,依此类推。
正如你肯定会看到的,上面的表达式包含多个rex表达式,谁能告诉我,有没有办法把它们组合成一个rex表达式。
发布于 2017-07-07 20:47:51
第https://docs.splunk.com/Documentation/Splunk/6.6.1/SearchReference/Rex页上的第一个示例显示了如何使用单个rex命令提取多个字段。如果您的_raw是多行的,请根据需要使用\n或\r。http://docs.splunk.com/Documentation/Splunk/6.6.1/Knowledge/AboutSplunkregularexpressions
发布于 2022-01-11 20:48:27
您只需在正则表达式中放入几个组匹配。下面是一个示例:
| rex field=_raw "\"SubjectId\":\"(?P<User>[^\"]*)\".*\"GrantType\":\"(?P<GrantType>\w*)\".*\"Category\":\"(?P<Category>\w+)\".*\"Name\":\"(?P<desc>[^\"]*)\".*\"TimeStamp\":\"(?P<TimeStamp>[^\"]*)\".*\"RemoteIpAddress\":\"(?P<IP>(?:[0-9]{1,3}\.){3}[0-9]{1,3})\"" |
当然,这需要提前知道字段的顺序,这在搜索中链接多个'rex‘表达式时不是必需的。
我确实发现,对于复杂的示例,首先在regex101.app中添加几行代码来验证表达式会更容易(我使用的是本地安装的应用程序,但网站可以工作)
https://stackoverflow.com/questions/31492632
复制相似问题