2016-08-23 7 views
0

Ich bin ein grok/logstash newbe und habe Probleme mit der 3. Reihe von Zahlen in meiner Nachricht.GROK drittes Spiel

"message" => "xyz event = 345 sequence = 55 Wert = 75"

Im Grunde, was ich will, ist der letzte Satz von '75' Ziffern

mein Filter: grok {match = > ["message", "(? [0-9] +)"]} gibt 345 zurück, wie lege ich die 3're-Übereinstimmung fest?

+0

Try 'match => [ "message",„(? [0-9] +) $ "]' –

Antwort

0

Um den dritten Satz von Ziffern zu entsprechen, müssen Sie

^(?:\D*\d+){2}\D*(?<value>\d+) 

Siehe regex demo

Musterdetails verwenden:

  • ^(?:\D*\d+){2} - null oder mehr Nicht-Ziffern folgen mit 1 + Ziffern, 2 mal
  • \D* - 0+ Nicht-Ziffern
  • (?<value>\d+) - der dritte Satz von Ziffern
+0

Meine Nachricht enthält am Ende unvorhersagbare Zeichen, also muss ich im Grunde genommen die dritte Ziffernfolge [0-9] + nehmen. Grundsätzlich kann $ – Duncan

+0

nicht OK, dann bitte schreibe die * letzten Ziffern * in deiner Frage um –

+0

Hast du die aktualisierte Lösung ausprobiert? Wenn das nicht funktioniert, probiere '^ \ D * (?: \ d + \ D +) {2} (? \ d +)' Dies ist restriktiver und erfordert mindestens 3 Ziffernblöcke, die durch 1 oder mehrere Nicht-Ziffern-Symbole getrennt sind. –