ljhway
如何查询5分钟内指定字符串出现的次数
比如系统有以下日志:
16:58:02 123
16:58:20 123
16:59:02 234
17:00:02 123
17:01:02 123
17:02:02 345
17:03:02 123
17:04:02 123
17:05:02 123
17:06:02 123
17:07:02 123
如何查询每5分钟内出现123的次数?
本来想用分钟数减5就OK,但是如果跨小时就不能用减法了。
PS:俺用来做MRTG监控用的。
再补充一点,一个日志里面只有24小时的,所以不会出现跨天的比如23:59之后是00:01什么的。
[[i] 本帖最后由 ljhway 于 2008-7-1 19:14 编辑 [/i]]
ly5066113
try :
test.awk
[code]#! /bin/awk
BEGIN {
FS = "[: ]+"
}
{
min = $1 * 60 + $2
if ( NR == 1 ) {
begin = min
end = min + 5
}
if ( min > end ) {
printf "%02d:%02d -- %02d:%02d/t%d/n" ,begin / 60 ,begin % 60 ,end / 60 ,end % 60 ,i
i = 0
begin = end + 1
end = end + 6
}
if ( $4 == 123 ) {
i ++
}
}
END {
printf "%02d:%02d -- %02d:%02d/t%d/n" ,begin / 60 ,begin % 60 ,end / 60 ,end % 60 ,i
}[/code]
awk -f test.awk logfile
[[i] 本帖最后由 ly5066113 于 2008-7-1 20:06 编辑 [/i]]