如何从 Splunk 中的新 eval 字段名中搜索值的事件?

How to search events for a value from new eval fieldname in Splunk?

我需要搜索包含从新字段名称生成的特定值的事件。这就是我要实现的目标:

index=app sourcetype=source 
| eval uri_t = "uri:type:subtype:123-5678:DATA_REFERENCE:DATA1:999:123-5678:DATA2:DATA_REFERENCE2:123456" 
| eval uri2=replace(uri_t, "\:", "%3A") 
| search uri2

基本上,我使用替换和求值函数将 url 的一部分编码到字段名称 uri2 中,然后我需要在编码值的结果中专门搜索。但似乎使用搜索,将搜索“uri2”而不是整个编码字符串。

注意,我不得不使用 replace 对部分 url 进行编码,因为 splunk 中似乎没有编码功能。

如有任何帮助,我们将不胜感激。

如您所知,search 命令搜索整个事件。要在字段中查找文本,请使用以下命令之一。

| where match(uri2, "<regex>")

| regex uri2="<regex>"

两者都会过滤掉不匹配给定正则表达式的事件。

如果要在不过滤事件的情况下在字段中查找子字符串,请使用 rex 命令。

| rex field=uri2 "<regex>"

请注意 rex 必须包含命名的捕获组。群组名称将成为 rex 将放入匹配文本的字段。