如何提取splunk字段中最后一个斜杠后的内容?
How to extract contents after the last slash in fields in splunk?
我是 splunk 的新手..所以我有一个包含这种格式的内容(事件)的日志
tool_code: error_code (path1/path2/path3/filename1,行) path1.path2.path3.testname1
我写了 rex 来提取文件名和测试名
雷克斯
|rex field=_raw (?<UNW>\S+)\s+(?<UNWA>\S+)\s+(?<FILE_NAME>\S+)\s+(?<TEST_NAME>\S+)
这创建了这种格式的 table(通过使用这个命令|table FILE_NAME, TEST_NAME
)
FILE_NAME ------------------------------------ TEST_NAME
path1/path2/path3/filename1,line ---------- path1.path2.path3.testname1
但我希望 FILE_NAME 只保存名称(文件名 1)而不是路径(我们应该提取最后一个斜线之前和逗号之后的内容)并且类似地 TEST_NAME 应该只有testname1 而不是路径。
请帮助我实现这个目标
我会分几个不同的步骤来完成:
| rex field=_raw ":\s+error_code\W+(?<full_path>[^,]+),(?<line>[^)]+)\W+(?<test_path>.+)"
其次是:
| rex field=full_path "(?<filename>\w+)$"
其次是:
| rex field=test_path "(?<testname>[^\.]+)$"
当然,假设 "testname" 中没有点 - 这将有效:)
您创建了一个名为 "FILE_NAME" 的字段。
您现在可以做的是使用拆分命令创建一个新字段:
`eval OnlyFileName = mvindex(split(FILE_NAME,"/"),-1)`
eval = 创建新字段
mvindex(split = 分割命令
"/" = 拆分为 /
-1 = 列表中的最后一个对象。
继续分裂直到你得到你想要的。
我推荐使用这种方式,它比一直使用正则表达式要简单得多。花费更少的时间...
试试这个正则表达式。
| rex "[\S\/]+\/(?<FILE_NAME>\S+),\w+\)\s+[\S\.]+\.(?<TEST_NAME>\w+)$"
我是 splunk 的新手..所以我有一个包含这种格式的内容(事件)的日志
tool_code: error_code (path1/path2/path3/filename1,行) path1.path2.path3.testname1
我写了 rex 来提取文件名和测试名 雷克斯
|rex field=_raw (?<UNW>\S+)\s+(?<UNWA>\S+)\s+(?<FILE_NAME>\S+)\s+(?<TEST_NAME>\S+)
这创建了这种格式的 table(通过使用这个命令|table FILE_NAME, TEST_NAME
)
FILE_NAME ------------------------------------ TEST_NAME
path1/path2/path3/filename1,line ---------- path1.path2.path3.testname1
但我希望 FILE_NAME 只保存名称(文件名 1)而不是路径(我们应该提取最后一个斜线之前和逗号之后的内容)并且类似地 TEST_NAME 应该只有testname1 而不是路径。
请帮助我实现这个目标
我会分几个不同的步骤来完成:
| rex field=_raw ":\s+error_code\W+(?<full_path>[^,]+),(?<line>[^)]+)\W+(?<test_path>.+)"
其次是:
| rex field=full_path "(?<filename>\w+)$"
其次是:
| rex field=test_path "(?<testname>[^\.]+)$"
当然,假设 "testname" 中没有点 - 这将有效:)
您创建了一个名为 "FILE_NAME" 的字段。 您现在可以做的是使用拆分命令创建一个新字段:
`eval OnlyFileName = mvindex(split(FILE_NAME,"/"),-1)`
eval = 创建新字段
mvindex(split = 分割命令
"/" = 拆分为 /
-1 = 列表中的最后一个对象。
继续分裂直到你得到你想要的。
我推荐使用这种方式,它比一直使用正则表达式要简单得多。花费更少的时间...
试试这个正则表达式。
| rex "[\S\/]+\/(?<FILE_NAME>\S+),\w+\)\s+[\S\.]+\.(?<TEST_NAME>\w+)$"