awk で過去 10 分間のログを表示するときにエラーが発生しました

awk で過去 10 分間のログを表示するときにエラーが発生しました

下記のコマンドを使用して、過去 10 分間のログ データを表示しています。月が同じであれば問題なく動作しますが、月が変更されるとデータは表示されません。

awk -v d1="$D1" -v d2="$D2" '$0 > d1 && $0 < d2 || $0 ~ d2' /home/user.log

以下の場合は問題なく動作します。

D1="Aug  1 12:00:00"
D2="Aug  1 12:10:00"

ただし、以下の場合にはデータは表示されません。

D1="Jul 31 11:55:00"
D2="Aug  1 00:05:00"

追伸:私はAIXを使用しています

答え1

これは、日付ではなく文字列を比較しているためだと思います。月が変わると、比較が壊れます。

エポック形式や数値日付形式など、別の方法で日付をフォーマットしてみてください。

date -d "Jul 31 11:55:00" +%s

1533063300を出力します。同様に、

date -d "Aug  1 00:05:00" +%s

1533107100を出力します。

そこからは簡単に比較できるはずです。

関連情報