案例一、分析IP出现的次数
#执行下列命令生成ip.log文件作为测试
cat >ip.log<<'EOF'
10.0.0.1
10.0.0.2
10.0.0.2
10.0.0.4
10.0.0.1
10.0.0.4
10.0.0.5
10.0.0.1
10.0.0.1
10.0.0.2
EOF
简单方法:采用sort+uniq组合
[root@m01~]# sort ip.log |uniq -c
4 10.0.0.1
3 10.0.0.2
2 10.0.0.4
1 10.0.0.5
使用awk数组的方法
[root@m01~]# awk '{ip[$1]++}END{for(n in ip) print ip[n],n}' ip.log
4 10.0.0.1
3 10.0.0.2
2 10.0.0.4
1 10.0.0.5
注意:这里数组的下表并不是数字,而是IP,很多编程语言一般都不直接支持数组的表为非数字,但是awk支持。
案例二、分析每个IP的访问流量
#执行下列命令生成ip.log文件作为测试
cat >ip_flow.log<<'EOF'
10.0.0.1 10
10.0.0.2 20
10.0.0.2 10
10.0.0.4 30
10.0.0.1 30
10.0.0.4 40
10.0.0.5 20
10.0.0.1 10
10.0.0.1 30
10.0.0.2 40
EOF
使用awk函数计算
[root@m01~]# awk '{ip[$1]+=$2}END{for(n in ip) print n,ip[n]}' ip_flow.log
10.0.0.1 80
10.0.0.2 70
10.0.0.4 70
10.0.0.5 20