2017-01-12 22 views
0

内の値の部分を見つける:最初のファイルでSplunkは:私は2つのCSVファイル持っているリスト

  • を、マシンのホスト名のリスト(:ABCZER12 EX)があります。
  • 2番目のファイルには、マシンのホスト名(例:ABC)の最初の文字のリストがあり、各式は場所(例:ヨーロッパ、ブラジル...)に対応しています。

最初のファイルの例:

  • ABCZER12
  • ABCSDF56
  • ABCFHG76
  • OPQYGT65
  • XYTGHY41
  • XYZRFV78

そして、第二のファイルの例:私はそれに対応する位置が各ホスト名を関連付ける必要があり

  • ABC =>ヨーロッパ
  • OPQR =>ブラジル
  • XY => USA

。これを行うには、最初のリストが2番目のリストの式の1つと一致する場合は、各ホスト名を検索する必要があります。例:ABCZER12、ABCSDF56およびABCFHG76はABCと一致します。これは、これらのホスト名がヨーロッパの場所に対応していることを意味します。

ホスト名の中には、2番目のリスト(例:OPQYGT65)の式に一致しないものがあります。

2番目のファイルでは、式の文字数が必ずしも同じではありません。

2つのファイルには同じ列がないため、ここでは問題を解決するためにルックアップを使用できないと思います。

誰かが私の問題を解決するためのアイデアを持っているなら、それは素晴らしいことでしょう。

感謝:)

答えて

0

と仮定:

  • 最初のファイルがsource.csvで、sources.csvの
  • 見出しは "ホスト"
  • 秒のファイルであるplaces.csv
  • ですplaces.csvの見出しは「プレフィックス」と「国」
  • 新しい希望するフィールドは国
  • です

クエリ:

|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が場所でサブサーチを実行します。CSVと1つのevalを文字列に表を変換します。

Country=case(like(a, "ABC%"),"Europe", like(a, "OPQR%"),"Brazil", like(a, "XY%"),"USA") 

はその後、我々が使用している|ことにevalを使用するサブサーチの前に「evalのを」。

結果は検索操作のように機能しますが、正確な単語の検出ではなく接頭辞が使用されます。

関連する問題