我正在创建一个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语句来检查这个?
答案 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
...