我有一个日志文件,用于记录每5分钟一次的进程,但不是精确的分钟/秒,我希望找到每小时的第一条日志消息。示例行如下所示:
2013-01-01 09:03:55 foo bar some log message foo bar
与grep
一起使用的正则表达式可以提取那些第一小时的行吗?
答案 0 :(得分:1)
像
这样的东西grep "[0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\} [0-9]\{2\}:0[0-5]" logfile
答案 1 :(得分: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