我正在尝试 grep 过去 24 小时内的条目的日志文件。我想出了以下命令:
grep "$(date +%F\ '%k')"\|"$(date +%F --date='yesterday')\ [$(date +%k)-23]" /path/to/log/file
我知道正则表达式可以在 grep 中使用,但对正则表达式不是很熟悉。你看,我正在寻找今天或昨天在当前时间或更高时间之间的任何东西。这不起作用,我猜是由于我试图在 grep 的正则表达式中将命令作为变量传递的方式。我也不反对将 awk 与 awk 一起使用,我想出了以下内容,但它没有正确检查变量:
t=$(date +%F) | y=$(date +%F --date='yesterday') | hr=$(date +%k) | awk '{ if ($1=$t || $1=$y && $2>=$hr) { print $0 }}' /path/to/log/file
我会假设 systime 可以与 awk 而不是设置变量一起使用,但我对 systime 一点也不熟悉。任何命令的任何建议将不胜感激!哦,这是日志格式:
2012-12-26 16:33:16 SMTP connection from [127.0.0.1]:46864 (TCP/IP connection count = 1)
2012-12-26 16:33:16 SMTP connection from (localhost) [127.0.0.1]:46864 closed by QUIT
2012-12-26 16:38:19 SMTP connection from [127.0.0.1]:48451 (TCP/IP connection count = 1)
2012-12-26 16:38:21 SMTP connection from [127.0.0.1]:48451 closed by QUIT
2012-12-26 16:38:21 SMTP connection from [127.0.0.1]:48860 (TCP/IP connection count = 1)