過去10分間のログに特定のパターンがある行を表示する

過去10分間のログに特定のパターンがある行を表示する

過去10分間にエラーが発生した行をログファイルに表示する必要があります。

Aug 26 10:50:42 Normal line.
Aug 26 10:51:23 Normal line.
Aug 26 10:55:33 Error line.
Aug 26 10:56:45 Normal line.
Aug 26 10:58:12 Error line.
Aug 26 11:02:31 Normal line.
Aug 26 11:03:32 Normal line.
Aug 26 11:04:11 Normal line.

上記のログファイルの例を考えてみましょう。次の2行を表示したいです。

Aug 26 10:55:33 Error line.
Aug 26 10:58:12 Error line.

私はAIXを使用しています。

ベストアンサー1

2つの答えについてStéphane Chazelasに送信するヒント:

私は過去10分間に可能なすべてのタイムスタンプ項目を繰り返す無差別代入ソリューションを考えました。

#!/bin/ksh93
for((i=0;i<=600;i++))
do
  d=$(printf '%(%b %d %H:%M:%S)T\n' "$i seconds ago")
  grep "^${d} Error" logfile
done

grep(内蔵printfとともに)601回呼び出すので無差別攻撃です。%Tランダムなタイムスタンプを印刷(およびフォーマット)するには、printfオプションをサポートするksh93が必要です。しかし、次のような極端なケースのために、日付計算を直接実行するよりも簡単です。

  • 日限定
  • 月限度
  • 可能な夏時間の変更

おすすめ記事