我正在尝试使用Splunk命令 雷克斯 它使用正则表达式从日志语句中提取数据。 这是xml中值得关注的部分。
<tmsTrip xmlns="removed_for_security" xmlns:ns2="removed_for_security">
<recordType>PURCHASEDLINEHAUL</recordType>
<eventType>DISPATCH</eventType>
<updatedDateGMT>2020-05-21T17:22:55.000Z</updatedDateGMT>
<origin>
<ns2:numberCode>923</ns2:numberCode>
<ns2:numberType>2</ns2:numberType>
</origin>
<destination>
<ns2:numberCode>72</ns2:numberCode>
<ns2:numberType>2</ns2:numberType>
</destination>
我需要的是 号码 这只霸王龙返回了第一条,923。
rex field=_raw "\<ns2\:numberCode\>(?P<origin>[^\<]+)"
我需要一个rex来返回第二个数据,72。
你可以告诉我 rex
来返还他们两个,使用 max_match
选项。
| rex max_match=0 "\<ns2\:numberCode\>(?P<origin>[^\<]+)"
| eval originCode = mvindex(origin, 0), destCode = mvindex(origin, 1)
不幸的是,没有办法知道匹配的顺序,所以如果在XML中目的地在原点之前,这个选项就会失败。
您应该可以使用 spath
来提取整个XML,并参考 "origin.numberCode "和 "destination.numberCode",但我对这个命令没有足够的经验,无法提供很多指导。