Awk 限制exim日志的grep结果

Awk 限制exim日志的grep结果,awk,grep,exim,Awk,Grep,Exim,我正在尝试编写一个小shell脚本,每小时运行一次,并返回过去一小时内发送电子邮件的所有用户和IP,以便我可以查找任何受损帐户 我通过以下方式获取所需数据: grep "A=dovecot_login" /var/log/exim_mainlog | sed -e 's#H=.* \[##' -e 's#\]:[0-9]*##' | awk '{print $5,$6}' | sort | uniq -c 但我想将这些结果限制在前一个小时(因此,如果我在上午10点运行,那么结果将是从上午9点到

我正在尝试编写一个小shell脚本,每小时运行一次,并返回过去一小时内发送电子邮件的所有用户和IP,以便我可以查找任何受损帐户

我通过以下方式获取所需数据:

grep "A=dovecot_login" /var/log/exim_mainlog | sed -e 's#H=.* \[##' -e 's#\]:[0-9]*##' | awk '{print $5,$6}' | sort | uniq -c
但我想将这些结果限制在前一个小时(因此,如果我在上午10点运行,那么结果将是从上午9点到上午10点的登录)

你知道怎么限制吗?我以为我已经接近你了

hour=`date | awk {'print $4'} | cut -d: -f 1`; lasthour=`expr $hour - 1`; grep "`date -I` $lasthour" /var/log/exim_mainlog | grep "A=dovecot_login" | sed -e 's#H=.* \[##' -e 's#\]:[0-9]*##' | awk '{print $5,$6}' | sort | uniq -c
但是在那里没有得到爱


TIA

不要重新发明轮子,使用其他人已经编写并在生产中测试过的工具:从logcheck包中获取logtail2 perl脚本。然后每小时有一个cronjob来处理跟踪的日志文件。logtail2脚本跟踪它上次运行时停止的位置,因此您知道如果每小时运行一次,您将只获得最后一小时的日志行。然后使用常规文本解析来提取要跟踪的数据

可以在上找到tarball。

您的方法是“次优”。