0

我有一个进程的日志文件,该进程每 5 分钟记录一次,但不是精确的分钟/秒,我想找到每小时的第一条日志消息。示例行如下所示:

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

grep提取那些第一时间行的正则表达式是什么?

4

2 回答 2

1

就像是

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

您不能使用 grep 每小时只获取第一行,因为它不会在匹配之间保持状态。像这样的事情会在例如每小时的前五分钟获得所有线路:

grep '\d\d:0[0-5]:\d\d' logfile

您可以使用 awk 获取每小时前五分钟的第一个条目:

awk -F'[ :]' 'BEGIN {hh=-1} $2!=hh && $3>=0 && $3<5 {hh=$2; print}' test
于 2013-01-02T23:42:14.063 回答