我正在寻找一个快速的脚本 ,将parsing一个大的mail.log,并返回两个指定的时间戳之间的部分。 我想在我的所有邮件服务器上运行它,并让它们将相关日志部分复制到中央位置以供进一步分析。
我写了一些有用的bash,但速度很慢。
有没有人知道已经存在的任何东西来完成这个任务?还是我需要学习Perl并且自己创build一些东西?
(我没有把这个放在SO上,因为我还没有编写任何代码 – 只是寻找其他人正在使用的东西)
我爱awk 🙂
对于我的日志,格式为:
Jul 14 12:49:10 xxxxxx sendmail[31337]: ...........
我会用:
awk '$3 >= "12:00:00" && $3 <= "13:00:00" {print;}' < /var/log/maillog
想必您可以根据需要进行调整,例如,如果您不按天分割日志,
奖金:
Apache格式,我碰巧有踢:
xxx.xxx.xxx.xxx - - [01/Jul/2009:03:06:24 -0400] "GET /favicon.ico HTTP/1.1" 200 3638 awk '$4 >= "[01/Jul/2009:03:00:00" && $4 <= "[01/Jul/2009:04:00:00" {print;}' < access_log
对于特定的date范围并打印>输出文件
(我不能把上面的回答作为评论,否则我会这样做的)
HTH
awk '$2 >= "21" && $3 >= "09:00:00" && $2 >= "21" && $3 <= "11:00:10" {print > "m_range.log";}' < /var/log/m.log cat m_range.log ... Nov 21 09:00:17 mail postfix/qmgr[1694]: 1C50D276524A: from=<[email protected]>, size=2378, nrcpt=1 (queue active) ...