shell统计日志中时间段内匹配的数量的方法
shell统计日志中时间段内匹配的数量的方法,有需要的朋友可以参考下。
假设日志文件mtasvr.log格式如下:
T:24583088(04:02:06)[root:Info] 6KqowLDLAgC93DFIKrENAA==.41S2:from=<root@localhost.localdomain>,to=<root@localhost.localdomain>, queued
T:122428336(13:36:51)[root:Info] 6KqowLAbAAByYzJIZGsOAA==.2W:from=<admin@tebie.com>,to=<admin@tebie.com>, queued
要求统计从14:27:20到15:26:41之间包含queued的数量。
最初,用grep匹配queued,然后用awk取出()中间的时间,最后用wc来统计行数,得到下面这条语句:
接下来,觉得两次awk取出括号()中的时间比较繁琐。决定用sed替换掉括号再统计,会比较好看:
然后,想法应该去掉cat和grep。cat本身就没必要,grep的匹配也可以直接用sed来完成:
最后,把wc统计行数也去掉,只用sed和awk来完成这个任务:
总结:
sed和awk很强大,当然有些简化也没必要。
比如wc就能很好的完成统计行数的任务,没必要再去想awk怎么来实现。
您可能感兴趣的文章:
shell统计日志中时间段内匹配的数量的方法
Laravel 集成的 Monolog 库对日志进行配置和记录实例
Linux管理日志系统详解
shell位置变量实现目录文件备份脚本
mysql优化之如何定位效率较低的SQL
Linux日志服务介绍和日志服务器配置
查看linux日志的方法
inux shell初级入门教程
awk抽出指定时间段内的日志
清除mysql的log-bin日志的方案