2017-01-12 1 views
0

Ich habe zwei CSV-Dateien:Splunk: einen Teil eines Wert in einer Liste finden

  • in der ersten Datei, gibt es eine Liste von Maschinen Host-Namen (zB: ABCZER12).
  • und in der zweiten Datei habe ich eine Liste der ersten Buchstaben der Maschinen Hostnamen (ex: ABC), und jeder Ausdruck entspricht einem Ort (zB: Europa, Brasilien ...).

Ein Beispiel für die erste Datei:

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

Und ein Beispiel für die zweite Datei:

  • ABC => Europa
  • OPQR => Brasilien
  • XY => USA

Ich brauche jeden Hostnamen mit der entsprechenden Lage zu assoziieren . Um dies zu tun, muss ich nach jedem Hostnamen suchen, wenn dessen Anfang mit einem der Ausdrücke in der zweiten Liste übereinstimmt. Beispiel: ABCZER12, ABCSDF56 und ABCFHG76 stimmen mit ABC überein, dh diese Hostnamen entsprechen dem Standort Europa.

Einige Hostnamen können keinem der Ausdrücke in der zweiten Liste (ex: OPQYGT65) entsprechen.

In der zweiten Datei haben Ausdrücke nicht immer die gleiche Anzahl an Buchstaben.

In den zwei Dateien gibt es keine Spalte, die identisch sind, also denke ich, dass ich keine Lookups verwenden kann, um mein Problem hier zu lösen.

Wenn jemand eine Idee haben, um mein Problem zu lösen, wäre es großartig.

Thanks :)

Antwort

0

Unter der Annahme:

  • erste Datei ist source.csv,
  • Überschrift sources.csv ist "host"
  • zweite Datei ist places.csv
  • Überschriften von places.csv ist "Präfix" und "Land"
  • neues gewünschtes Feld ist Land

query:

|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] 

Erläuterung: Splunk subsearch in den Orten laufen.csv und die Tabelle zu einer eval Zeichenfolge konvertieren:

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

Dann verwenden wir „| eval“ vor dem subsearch dass eval zu verwenden.

Die Ergebnisse verhalten sich wie eine Nachschlageoperation, aber mit Präfix anstatt einer genauen Worterkennung.

Verwandte Themen