特定の時間範囲内のログをフィルタリングする方法

特定の時間範囲内のログをフィルタリングする方法

私のログ形式は次のとおりです(デモのために単純化されています)。

2018-04-12 14:43:00.000 ERROR hello
2018-04-12 14:44:01.000 ERROR world
2018-04-12 14:44:03.000 INFO this is a multi-line log
NOTICE THIS LINE, this line is also part of the log
2018-04-12 14:46:00.000 INFO foo

それでは、ログをフィルタリングして[2018-04-12 14:44:00.000, 2018-04-12 14:45:00.000)次の出力を生成するにはどうすればよいですか?

2018-04-12 14:44:01.000 ERROR world
2018-04-12 14:44:03.000 INFO this is a multi-line log
NOTICE THIS LINE, this line is also part of the log

ベストアンサー1

そしてawk

awk -v 'start=2018-04-12 14:44:00.000' -v end='2018-04-12 14:45:00.000' '
   /^[[:digit:]]{4}-[[:digit:]]{2}-[[:digit:]]{2} / {
     inrange = $0 >= start && $0 <= end
   }
   inrange' < your-file

mawkPOSIX文字クラスとスペース正規表現演算子がサポートされていないと機能しません。

おすすめ記事