0

5 分ごとにログを記録するプロセスのログ ファイルがありますが、正確な分/秒ではありません。各時間の最初のログ メッセージを見つけたいと考えています。サンプル行は次のようになります。

2013-01-01 09:03:55 foo bar some log message foo bar

grepこれらの最初の時間の行を抽出するために使用する正規表現は何でしょうか?

4

2 に答える 2

1

一致間の状態を保持しないため、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
于 2013-01-02T23:42:14.063 に答える
1

何かのようなもの

grep "[0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\} [0-9]\{2\}:0[0-5]" logfile
于 2013-01-02T23:38:25.050 に答える