2016-03-21 5 views
0

ログファイルに1時間の間隔でデータを抽出します。ここに私の変数です:awkを使って時間の範囲を取得するには?

date_file = date +"%Y-%m-%d %H" date_minus_one = date -d "-1 hour" +"%Y-%m-%d %H" date_minus_two = date -d "-2 hour" +"%Y-%m-%d %H"

ここに私の構文は、awkの中だが、それは常にすべてのデータを印刷します。

awk '$date_file >= $date_minus_one && $date_file <= $date_minus_two' <filename> 

また、私は1時間の間隔を得ることにはgrepを使用してきましたが、それはうまくいきませんでした。

ここで私は時間のデータごとに抽出するサンプルデータです:

2016-03-30|00:54:46,060|[WARNING] 
2016-03-30|00:55:46,318|[OK] 
2016-03-30|00:55:46,318|[OK] 
2016-03-30|02:42:13,691|[UNKNOWN] 
2016-03-30|07:53:16,356|[CRITICAL] 
2016-03-30|08:56:41,410|[WARNING] 

答えて

0

日からの出力が文字列であり、その中にスペースを持っている - すなわち

$ date -d "-2 hour" +"%Y-%m-%d %H" 
2016-03-20 18 

したがって、ファイル内の何かと比較するには、引用符で囲む必要があります。

問題の一部を解決するだろう
awk '"$date_file" >= "$date_minus_one" && "$date_file" <= "$date_minus_two"' 

しかしご説明$ date_fileによると、$ date_minus_oneなどの定数、実行時に変更されますので何もあり、そして式が常に真であるか、常にしますか偽です。

+0

私はそれを常に真実にするために何ができるのですか?それで私のファイルで1時間あたりのデータを得ることができます。 –

+0

@RobertJohnMartin crontab? – Kent

+0

@RobertJohnMartin - あなたのファイルがどのように見えるのかわからないので、答えることは不可能です - あなたの質問を更新してください。ファイル名の例とファイルコンテンツの例を追加してください – Soren

関連する問題