5 分ごとにログを記録するプロセスのログ ファイルがありますが、正確な分/秒ではありません。各時間の最初のログ メッセージを見つけたいと考えています。サンプル行は次のようになります。
2013-01-01 09:03:55 foo bar some log message foo bar
grep
これらの最初の時間の行を抽出するために使用する正規表現は何でしょうか?
一致間の状態を保持しないため、grep を使用して各時間の最初の行を 1 つだけ取得することはできません。このようなものは、たとえば毎時間最初の 5 分間ですべての行を取得します。
grep '\d\d:0[0-5]:\d\d' logfile
awk を使用すると、1 時間ごとに最初の 5 分間の最初のエントリだけを取得できます。
awk -F'[ :]' 'BEGIN {hh=-1} $2!=hh && $3>=0 && $3<5 {hh=$2; print}' test
何かのようなもの
grep "[0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\} [0-9]\{2\}:0[0-5]" logfile