用cat 统计apache 日志ip

现有一段apache的日志,需要从日志中提取出访问量最大的IP。使用shell实现。

日志如下(只是举例,故数据量较小):

$ more aa.txt
127.0.0.1 - frank [10/Oct/2000:13:55:36 -0700] "GET /apache_pb.gif HTTP/1.0" 200 2326
192.168.1.100 - frank [10/Oct/2000:13:55:36 -0700] "GET /apache_pb.gif HTTP/1.0" 200 2326
192.168.1.100 - frank [10/Oct/2000:13:55:36 -0700] "GET /apache_pb.gif HTTP/1.0" 200 2326
192.168.1.100 - frank [10/Oct/2000:13:55:36 -0700] "GET /apache_pb.gif HTTP/1.0" 200 2326

1.要提取访问量最大的IP,需要先从日志中把IP段提取出来。

$ cat aa.txt |awk -F " " '{print $1}'
127.0.0.1
192.168.1.100
192.168.1.100
192.168.1.100

(PS,此处也可以用cut命令实现。

$ cut -d " " -f 1 aa.txt
127.0.0.1
192.168.1.100
192.168.1.100
192.168.1.100)

2.对IP进行统计,看各IP出现过多少次

$ cat aa.txt |awk -F " " '{print $1}' |uniq -c
1 127.0.0.1
3 192.168.1.100

(PS:wc -l也可以对行数统计,但统计的是整体的,所有行数。不会分类统计)

3.按IP出现次数从大到小排列

$ cat aa.txt |awk -F " " '{print $1}' |uniq -c |sort -r
3 192.168.1.100
1 127.0.0.1

4.再次提取出IP段

$ cat aa.txt |awk -F " " '{print $1}' |uniq -c |sort -r |awk '{print $2}'
192.168.1.100
127.0.0.1

5.选择第一行

$ cat aa.txt |awk -F " " '{print $1}' |uniq -c |sort -r |awk '{print $2}' |head -1
192.168.1.100
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值