用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进行日志统计一分钟之内一些字段出现多少次的主要内容,如果未能解决你的问题,请参考以下文章