搜索条件以查找前一小时是否存在日志。

时间:2017-04-11 11:24:17

标签: unix

我正在创建一个unix脚本来检查是否为我们的某个作业生成了日志。日志正在保存在文件中,时间戳如

2017 Apr 11 13:09:54:384 - Required information will be present here.
2017 Apr 11 13:17:31:578 - Required information will be present here.

我们陷入了搜索条件,这将检查前一小时是否存在日志。

我如何写这个if语句来检查这个?

2 个答案:

答案 0 :(得分:2)

使用grep& date

grep -c "^$(date -d '-1 hour' '+%Y %b %d %H:')"

此处,date命令生成与日志文件匹配的时间戳。然后,grep作为日志文件中的时间戳。 -c打印匹配的文件行数。

答案 1 :(得分:1)

这可能是一个有点脏的解决方案,但您可以先构建前一个小时的“前缀”,即2017 Apr 11 12,然后检查日志文件中有多少行匹配:

#get the prefix
prefix=$(date -d'-1 hour' +'%Y %b %d %H')

#count matching lines
cnt=$(gawk -F':' "\$1==\"$prefix\"" test.log | wc -l)
echo $cnt

假设test.log包含

2017 Apr 11 12:09:54:384 - Required information will be present here.
2017 Apr 11 13:17:31:578 - Required information will be present here.

然后上面变量cnt的值将为1(如果date命令产生2017 Apr 11 12)。那么你可以在$cnt ...

的基础上分支你的脚本