我正在寻找快速脚本这将解析一个大型的 mail.log,并返回其中的一部分两个指定时间戳之间。我想在我的所有邮件服务器上运行它,并让它们将相关日志部分复制到中心位置以供进一步分析。
我用 bash 编写了一些可以运行的东西,但是速度很慢。
有人知道吗任何已经存在的东西为了实现这一点——或者我需要学习 perl 并自己做一些东西?
(我没有把这个放在 SO 上,因为我还没有到我想写任何代码 – 只是寻找别人已经在使用的东西)
答案1
我喜欢 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
答案2
对于特定的日期范围并打印>输出文件
(我不能在上面的答案中将其作为评论,否则我会这样做)
高血压
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)
...