2016-08-03 8 views
-1

私は上記のようにタイムスタンプ2015-11-01 21:45:25,296を持っています。正規表現やgrokパターンを使って曜日(月、火など)を抽出することは可能ですか?あなたが望む事前タイムスタンプから曜日を見つける方法

+3

*抽出*は、文字列にその情報が含まれていることを意味します。 'Mon'や' Tue'はタイムスタンプには存在しないので、DateTimeの解析などを使って*計算することしかできません。 –

+0

曜日の抽出場所はどこですか? 2015年11月11日午後9時45分はニューヨークで日曜日ですが、東京では月曜日です。 – dasblinkenlight

+0

@dasblinkenlight PST形式です。 – Mangoski

答えて

1

これは、ルビーフィルタを使いたい場合には非常に簡単です。私は怠惰なので、私はこれをやっているだけです。ここで

は私のフィルタである:

filter { 

    ruby { 
     code => " 
     p = Time.parse(event['message']); 
     event['day-of-week'] = p.strftime('%A'); 
     " 
    } 

} 

'メッセージ' 変数は、stdinとstdoutとあなたの文字列を使用して、タイムスタンプ

を含むフィールドで、あなたが得る:

[email protected]:~/dev/logstash$ ./logstash-2.3.2/bin/logstash -f conf2/ 
Settings: Default pipeline workers: 8 
Pipeline main started 
2015-11-01 21:45:25,296 
{ 
     "message" => "2015-11-01 21:45:25,296", 
     "@version" => "1", 
    "@timestamp" => "2016-08-03T13:07:31.377Z", 
      "host" => "pandaadb", 
    "day-of-week" => "Sunday" 
} 

、それは何が必要ですホープ

アルトゥール

+0

イベントAPIはlogstash 5.0に変更されているとしましょうためのジョブがあり、私はこのエラーを取得していますevent.setのようなもの(「XYZ」、値) – pandaadb

+0

をしなければならないでしょう 'Rubyの例外が発生しました:あなたのルビーは – Mangoski

+0

をDUPすることはできません。ありがとうございました – Mangoski

0

おかげである:あなたの文字列を想定し

2015-11-01 21:45:25,296

mydate='2015-11-01' 
date +%a -d ${mydate% *} 

で何をしたいあなたを与えるだろう。

0

短い回答ではありません。 Wikipediaによる 正規表現、:

は...主に、文字列、または文字列のマッチングとのパターンマッチングで使用するために、検索パターンを定義する文字の並びである、すなわち、「検索と置換」操作様。

したがって、正規表現を使用すると、文字列を解析できます。文字列内の情報を検索しますが、計算は行いません。 このような計算をしたい場合は、プログラミング言語(Java、C#、Ruby [@ pandaadb suggest]など)またはそれらの計算を行う他のツール(Epoch Converter)の助けが必要です。

関連する問題