知识屋:更实用的电脑技术知识网站
所在位置:首页 > 操作系统 > linux

用cat统计apache日志ip

发布时间:2014-09-05 15:38:26作者:知识屋

用cat统计apache日志ip
 
现有一段apache的日志,需要从日志中提取出访问量最大的IP。使用shell实现。 
  www.zhishiwu.com  
日志如下(只是举例,故数据量较小): 
 
$ 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
 
(免责声明:文章内容如涉及作品内容、版权和其它问题,请及时与我们联系,我们将在第一时间删除内容,文章内容仅供参考)
收藏
  • 人气文章
  • 最新文章
  • 下载排行榜
  • 热门排行榜