2017-01-20 2 views
0

私は文字列フィールド "origin_message"を持っています。かなり大きなものは(メールの内容を取得するために複数行を使用している「origin_message」の例を:。logstashでgrokまたはgsubを使用して特定の単語の前の文字列の一部を削除するにはどうすればよいですか?

Delivered-to: [email protected] A LOT OF OTHER CONTENT Subject: Subject goes here AND THE REST OF THE MESSAGE 

望ましい結果:フレーズ:

Subject goes here AND THE REST OF THE MESSAGE 

は、「件名」の前に、すべてをトリミングする方法はありますか?

私は運では、次のフィルタを試してみました:いいえ必ず理由が、GSUBを使用して

filter { 
mutate { 
    add_field => { "original_message" => "%{message}" } 
    convert => { 
     "original_message" => "string" 
    } 

    gsub => [ 
     "original_message", "^(.*)Subject", " " 
    ] 
} 
} 
+0

'gsub'を使うのは正しいです。このパターンを使用すると '' ^(。*)件名: ''、次の出力が出ます。 ""件名はここに来てメッセージの残り " – Val

+0

私の場合はうまくいきません。おそらく、データを入力するために複数行のコードが使用されているからでしょうか?私はまだ完全な元のメッセージを持っています。 – AlexG

+0

しかし、イベントが 'gsub'フィルタに当たる時には、全てが1行に収まるでしょう。 – Val

答えて

0

を"original_message"フィールドを分離するためにそれをコピーする前に "message"フィールドに問題を修正しました。

filter { 
mutate { 
    gsub => ["message", "^(.*)Subject", " "] 
    add_field => { "original_message" => "%{message}" } 

    convert => { 
     "original_message" => "string" 
    } 
} 
} 

@Val、ご確認ありがとうございます。問題はパターンに関連していないように見えました。

関連する問題