shell习题--统计每个IP的访问量

shell统计每个IP的访问量

题目要求:
找出日志里面每个IP的访问量
如:1.log
127.0.0.1 - - [21/Dec/2017:16:33:21 +0800] “HEAD HTTP://111.com/ahdj.jpg1 HTTP/1.1” 404 - “-” “curl/7.29.0”
192.168.176.1 - - [21/Dec/2017:22:11:06 +0800] “GET /favicon.ico HTTP/1.1” 404 209 “-” “Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0”
192.168.176.1 - - [21/Dec/2017:22:11:14 +0800] “GET / HTTP/1.1” 200 7 “http://123.sogou.com/” “Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0”
192.168.176.1 - - [21/Dec/2017:22:14:58 +0800] “GET /favicon.ico HTTP/1.1” 404 209 “http://111.com/logo.png” “Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36”
统计里面每一个IP的访问量

分析:该日志的第一列就是访问IP,统计IP,要将这条取出,然后排序,统计重复条数
得到第一列 (awk ‘{print $1}’ 1.log)
排序 (sort -n)sort 是排序,-n选项是按数字排序
统计重复条数 (uniq -c)

[root@shuai-01 logs]# awk '{print $1}' 1.log |sort -n |uniq -c  
  2 127.0.0.1
  3 192.168.176.1

到这里,算的上是按照IP大小排序,如果想按IP访问量大小排序,需要在后面再加上一条sort -n ,将访问量由小极大排序

[root@shuai-01 logs]# awk '{print $1}' 1.log |sort -n |uniq -c |sort -n 
  2 127.0.0.1
  3 192.168.176.1

也可以由大极小排序,对找到IP条数进行排序,然后在进行排序,加上r选项。

[root@shuai-01 logs]# awk '{print $1}' 1.log |sort -n |uniq -c |sort -nr 
  3 192.168.176.1
  2 127.0.0.1

猜你喜欢

转载自blog.csdn.net/aoli_shuai/article/details/80192960