用AWK进行日志统计一分钟之内一些字段出现多少次

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用AWK进行日志统计一分钟之内一些字段出现多少次相关的知识,希望对你有一定的参考价值。

参考技术A #! /bin/bash
#统计1分钟前log所在行
start=`wc -l log`
start=$start%% *
sleep 60
#统计1分钟后log所在行
end=`wc -l log`
end=$end%% *
#输出开始行到结束行直接的work统计
awk ' NR>"'$start'" && NR<"'$end'" for (i=1;i<=NF;i++)a[$i]++ ENDfor (b in a) print b": "a[b] ' txt

awk数值统计脚本

  通信公司工作,经常处理各种协议接口,在统计协议接口字段内容时,需要统计字段填写的内容是否正确,和占比是多少。要是单次统计,估计会把人累死,写个脚本统计,轻松便捷。  

  举例:接口内容

  这是一条话单,这样的话单有很多条

  24|eb8f7837000039|||8613522222222|||2016092817|2016092817|7|1|10.82.58.2|4010|10.82.99.10|3868|2001

  统计结果举例:

  截取第10和11字段

--------- [ 10 ] ---------
Total 80816
35.66% 28817         1
6.09% 4924             2
18.37% 14843         3
39.87% 32221         4
 
--------- [ 11 ] ---------
Total 80816?

96.21% 77756       1?

0.15% 125     2?

3.63% 2935           3

#!/bin/bash
awk -F, ‘BEGIN

#这里-F, 需要注意,假如这里不用脚本,直接awk统计的话,需要使用awk两次,首次awk统计出结果,然后再用这个awk对同一数值归类。这时,-F, 是可以不写的,但是在写的时候,这里的“,” 是不能少的,不然报错。

{  total = 0;  }
{
        items[$0]++;
            total++;
}

END {
        for (item in items){
              printf("%6.2f%% %-10d %s ",
              items[item] * 100 / total, items[item], item); }
            printf("Total %d ", total);
}‘





















以上是关于用AWK进行日志统计一分钟之内一些字段出现多少次的主要内容,如果未能解决你的问题,请参考以下文章

Linux三剑客-awk专治 行间字段

oracle按每个10分钟进行分组展示数据

使用awk和grep做简单的统计

性能测试日志分析之awk基础用法

Linux awk统计日志中出现过的IP(或出现次数最多的N个IP)

Linux awk统计日志中出现过的IP(或出现次数最多的N个IP)