如何查询5分钟内指定字符串出现的次数

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]]