2016-12-29 20 views
0

複数の一致が生じるgrok式を作成しようとしています。私は同じパターンの5回の繰り返しを持つ行を解析しています。複数の一致を持つLogstash Grokパターン

私は正規表現で複数の一致を返す単純なパターンを作ることができましたが、Grokはそのように動作しないようです。私は本当にRubyを理解していないので、コードを実際に検査していません。

例入力:

222444555 

パターン:

(?<number>\d{3})* 

私はこのような出力が期待しているでしょう:

"number" : [ 
    [ 
     "222", "444", "555" 
    ] 
] 

またはそのような何かを。これはGrokでも可能ですか?私はパターンを3回繰り返すことができますが、いくつかの行には不明確な繰り返し数があります。

任意のポインタ?

+0

繰り返し数が不明な場合は、どのように「{3}」を設定しますか? –

+0

{3}は\ d(桁)文字クラスの繰り返しです。だから私が見つけようとしているのは(単に簡略化された表現ですが)3桁の繰り返しです。だから333444555の入力で私はそれぞれ3桁の3桁の桁を探しています。 – Gavin

+0

おっと、悪いです。説明をありがとう。 –

答えて

0

私は別のアプローチを採用しました。私はgrokを使って繰り返していた行の部分を抽出しました。

ruby { 
    code => "event.put('segment', event.get('segments').scan(/.{3}/)) 
} 

それは、私は複数を持ってその場にsplit {}続くセグメントプロパティの配列を、作成したとして、本当によく働いた:それから私は、スキャン機能を使用して、最大の部分にラインをチョップするruby {}フィルタを使用しました私が望む出来事。

関連する問題