awk数组实例1:统计访问web的日志用户IP数量并排序

root@localhost logs] cat access_log

10.12.29.250 - - [10/Oct/2017:10:41:19 +0800] "GET /favicon.ico HTTP/1.1" 404 209

10.12.29.250 - - [10/Oct/2017:10:41:49 +0800] "GET /favicon.ico HTTP/1.1" 404 209

10.12.29.250 - - [10/Oct/2017:10:42:00 +0800] "GET /kaoshi HTTP/1.1" 301 234

10.12.29.250 - - [10/Oct/2017:10:43:09 +0800] "GET / HTTP/1.1" 200 2271

10.12.29.250 - - [10/Oct/2017:10:43:24 +0800] "GET /kaoshi HTTP/1.1" 301 234

10.12.29.250 - - [10/Oct/2017:10:44:43 +0800] "GET /kaoshi HTTP/1.1" 301 234

10.11.37.15 - - [10/Oct/2017:10:46:26 +0800] "GET / HTTP/1.1" 200 2271

10.11.37.15 - - [10/Oct/2017:10:46:27 +0800] "GET /favicon.ico HTTP/1.1" 404 209

10.11.37.15 - - [10/Oct/2017:10:46:28 +0800] "GET /favicon.ico HTTP/1.1" 404 209

10.12.29.250 - - [10/Oct/2017:10:46:53 +0800] "GET /kaoshi/ HTTP/1.1" 200 528

...................................

方法1;

使用awk 取列;sort 是重复的内容相邻 -r 倒序 -n 数字方式排序 uniq 去重 -c 去重并显示重复次数

[root@localhost logs]# awk '{print $1}' access_log |sort | uniq -c | sort -rn | head  -5

25 10.13.61.250

11 10.13.15.134

2 10.13.65.251

2 10.11.45.198

1 10.12.46.235

[root@localhost logs]#

方法2:awk 数组

[root@localhost logs]# awk '{array[$1]++}END{for(key in array) print array[key],key }' access_log |sort -rn | haed -5

25 10.13.61.250

11 10.13.15.134

2 10.13.65.251

2 10.11.45.198

1 10.12.46.235

[root@localhost logs]#

说明:awk 默认是空格分隔;在access_log日志里第一列是用户IP;把$1(用户的IP)当作数组array的下标;IP出现的次数是数组的数值;for (key in array)遍历数组;

如array[10.13.15.134]开始是数值是0;当遍历数组时发现它一次自身数值就加1;数组遍历结束就会输出出现的次数和IP;array[key](次数)数组变量值;key(IP)数组下标

[root@localhost logs]# awk '{array[$1]++}END{for(key in array) if (array[key] > 1000){print array[key],key} }' access_log

2317 10.11.37.15

1556 10.11.33.16

1156 10.13.48.251

1681 10.11.43.120

1356 10.12.29.250

2441 10.11.21.17

1208 10.11.35.12

1220 10.13.15.235

1038 10.12.36.247

1711 10.12.21.252

1262 10.10.41.163

1278 10.11.42.26

1501 10.10.41.68

[root@localhost logs]#

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 转载 原文的排版和内容都更加友好,并且详细,我只是在这里贴出了一部分留作自己以后参考和学习,如希望更详细了解AWK...
    XKirk阅读 3,282评论 2 25
  • awk命令的基本使用 [root@shellscript ~]# head -n 3 /etc/passwd | ...
    古寒飞阅读 1,080评论 0 2
  • 接上文的聊聊高并发系统限流特技-1 原文来自开涛的博客,找不到第此原文链接了 接入层限流 接入层通常指请求流量的入...
    望月成三人阅读 3,991评论 0 4
  • 摘要:上一篇《聊聊高并发系统限流特技-1》讲了限流算法、应用级限流、分布式限流;本篇将介绍接入层限流实现。 接入层...
    落羽成霜丶阅读 953评论 0 5
  • 01. 今天周一,上的是早课,加上天气很好,工作可以早早完成。心情很好,忍不住吼了几首歌,绕操场跑了几圈! 02....
    我是简简单单阅读 114评论 0 0