
1、先查看下日志的格式:
"1.162.50.56,19.97.154.15" - - [04/Mar/2012:10:15:33 +0800] "GET /book/12688.HTML http/1.0" 200 48407 "http://www.baidu.com/" "Mozilla/4.0 (compatible; MSIE 7.0; windows NT 5.1; TrIDent/4.0; GTB6.4; znwb6500; .NET CLR 1.1.4322; CIBA; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; AskTbPTV2/5.9.1.14019)" "287000"
这里的ip地址可能是1个或多个;
2、代码
#!/usr/bin/perl my %totalip; my $key; my $ip1 = ''; sub hashValueIp { $totalip{$b} <=> $totalip{$a}; } while(<>){ chomp; ($ip1) = /^"(.*?)"/; my @ips = split(/, /,$ip1); foreach my $index (0..$#ips){ $totalip{$ips[$index]}++; } } print "ip address count \n"; foreach $key (sort hashValueIp(keys %totalip)){ print $key." ".$totalip{$key}."\n"; }
6行:构建子函数,使得输出按照ip的次数进行排序;
12行:这里的?是去除*匹配符的贪婪性,即可以获取第一对""之间的ip地址;
15行:统计ip数
输出:
ip address count 18.44.95.134 6466 19.7.154.16 5323 19.7.154.15 4811 19.53.48.2 574 14.193.167.1 290 17.0.0.1 172 21.6.3.77 114总结
以上是内存溢出为你收集整理的perl统计日志文件ip及数量全部内容,希望文章能够帮你解决perl统计日志文件ip及数量所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)