首页 > 解决方案 > 如何提取splunk字段中最后一个斜杠后的内容?

问题描述

我是 splunk 的新手。所以我有一个日志,其中包含这种格式的内容(事件)

tool_code: error_code (path1/path2/path3/filename1,line) path1.path2.path3.testname1

我写 rex 来提取文件名和测试名 rex 是

|rex field=_raw (?<UNW>\S+)\s+(?<UNWA>\S+)\s+(?<FILE_NAME>\S+)\s+(?<TEST_NAME>\S+)

这创建了这种格式的表(通过使用这个命令|table FILE_NAME, TEST_NAME

FILE_NAME -------------------------------------- TEST_NAME

path1/path2/path3/filename1,line ------------ path1.path2.path3.testname1

但我希望 FILE_NAME 只保存名称(filename1)而不是路径(我们应该在最后一个斜杠之前和逗号之后提取内容),同样 TEST_NAME 应该只有 testname1 而不是路径。

请帮助我实现这一目标

标签: splunkrex

解决方案


您创建了一个名为“FILE_NAME”的字段。您现在可以做的是使用 split 命令创建一个新字段:

   `eval OnlyFileName = mvindex(split(FILE_NAME,"/"),-1)`       

eval = 创建新字段

mvindex(split = 拆分命令

“/” = 除以 /

-1 = 列表中的最后一个对象。

继续分裂,直到你得到你想要的。

我建议使用这种方式,这比一直使用正则表达式要简单得多。花费更少的时间...


推荐阅读