3

我正在使用下面的 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,变量是地址 1,地址行 2 是“地址 2”,依此类推。

毫无疑问,您也会看到,上面的表达式包含多个 rex 表达式,有人可以告诉我,有没有办法将这些组合成一个 rex 表达式。

4

2 回答 2

0

页面https://docs.splunk.com/Documentation/Splunk/6.6.1/SearchReference/Rex上的第一个示例显示了如何使用单个rex命令提取多个字段。如果您_raw是多行的,请酌情使用\n\rhttp://docs.splunk.com/Documentation/Splunk/6.6.1/Knowledge/AboutSplunkregularexpressions

于 2017-07-07T12:47:50.917 回答
0

您只需在您的正则表达式中放置几个​​组匹配。这是一个例子:

| 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中添加几行来验证表达式更容易(我使用的是本地安装的应用程序,但网站可以工作)

于 2022-01-11T20:48:27.000 回答