Splunk - 根据分隔符将一个字段拆分为多个字段

时间:2021-06-28 21:01:43

标签: regex splunk splunk-query

我在需要拆分为多个字段的字段中有以下值,

类名:

abc.TestAutomation.NNNN.Specs.Prod/NDisableTransactionalAccessUsers.#()::TestAssembly:abc.TestAutomation

所需输出:

Productname : abc.TestAutomation.NNNN.Specs.Prod

Feature name : NDisableTransactionalAccessUsers

Project : TestAssembly:abc.TestAutomation

我一直在尝试使用 REX 命令将值提取到我的字段中,但我失败了。

source="Reports.csv"  index="prod_reports_data" sourcetype="ReportsData"  
| rex "classname(?<Productname>/*)\.(?<Featurename>#*)\.(?<Project>.*)" 
| table classname Productname Featurename Project

当我执行这个命令时,没有结果。我对 Splunk 很陌生,有人可以指导吗。

谢谢。

1 个答案:

答案 0 :(得分:0)

我几乎总是使用多个 rex 语句来获得我想要的......但如果你“知道”数据是一致的,这将起作用(在 regex101.com 上尝试过):

| rex field=_raw (?<classname>[^\/]+)\/(?<featurename>[^\.]+)\.[[:punct:]]+(?<project>[\w].+)

这个正则表达式的作用:

  • <classname> :: 从事件前面到正斜杠 (/) 的所有内容
  • <featurename> :: 任何跟在前斜线 (/) 之后直到文字点 (.) 的内容
  • 丢弃所有找到的标点符号
  • <project> :: 剩下的就行了

根据 regex101.com,这可能是您可以使用的最有效的雷克斯(总共 14 个步骤)