我有两个CSV文件:
第一个文件的示例:
第二个文件的示例:
我需要将每个主机名与其对应的位置相关联。为此,我需要搜索每个主机名,如果它与第二个列表中的一个表达式开始匹配。示例:ABCZER12,ABCSDF56和ABCFHG76将与ABC匹配,表示这些主机名对应于欧洲的位置。
某些主机名无法匹配第二个列表中的任何表达式(例如:OPQYGT65)。
在第二个文件中,表达式并不总是具有相同数量的字母。
在这两个文件中,没有相同的列,所以我认为我不能使用查找来解决我的问题。
如果有人有想法解决我的问题,那就太好了。
谢谢:)
答案 0 :(得分:0)
假设:
查询:
|inputlookup source.csv |table host
|eval
[|inputlookup places.csv |table prefix Country
|eval search="like(host, \""+prefix+"%\"),\""+Country+"\","
|stats values(search) as search |nomv search
|eval search=substr(search,1,length(search)-1)
|eval search="Country=case("+search+")" |table search]
说明: Splunk将在places.csv中运行subsearch并将表转换为一个eval字符串:
Country=case(like(a, "ABC%"),"Europe", like(a, "OPQR%"),"Brazil", like(a, "XY%"),"USA")
然后我们在子搜索之前使用“| eval”来使用该eval。
结果就像一个查找操作,但带有前缀,而不是精确的单词检测。