Chinaunix首页 | 论坛 | 博客
  • 博客访问: 207949
  • 博文数量: 39
  • 博客积分: 1057
  • 博客等级: 准尉
  • 技术积分: 926
  • 用 户 组: 普通用户
  • 注册时间: 2011-05-27 20:13
文章分类

全部博文(39)

文章存档

2012年(24)

2011年(15)

分类: Python/Ruby

2012-03-02 14:44:58


  1. #!/usr/bin/perl -w
  2. #script: anly.pl
  3. #分析统计文件中给定模式出现的次数
  4. #主要用来初步分析nginx的日志文件,当然其他的文件也可以
  5. #来源:Lover的工具小屋
  6. #author: Lover
  7. use strict;

  8. my $obj = shift || die "Usage: anly.pl xx.log '[^sS]top'\n no input file";
  9. # 默认匹配ip地址
  10. my $re = shift || '\d+\.\d+\.\d+\.\d+';
  11. my %uniq;
  12. my $total;
  13. my @tmp;

  14. open (OBJ,$obj) or die $!;
  15. my @data = <OBJ>;
  16. foreach (@data) {
  17.         if (/($re)/) {
  18.                 push(@tmp,$1);
  19.         }
  20. }
  21. @tmp = grep { !$uniq{$_}++ } sort @tmp;

  22. #开始格式化输出结果
  23. print "$_\n" for @tmp;
  24. print("----------------------------------------------\n");
  25. printf("%-38s %s\n",'查询元素','出现次数');

  26. #按照出现的次数顺序排列,如果要倒序的话将 $uniq{$a} <=> $uniq{$b} 替换为 $uniq{$b} <=> $uniq{$a}
  27. foreach (sort { $uniq{$a} <=> $uniq{$b} } (keys %uniq)){
  28.         printf("%-38s %s\n",$_,$uniq{$_});
  29.         $total += $uniq{$_};
  30. }
  31. printf("%-38s %s\n",'总计',$total);

阅读(1512) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

校长的马夹2012-03-03 00:42:50

恩,word应该填上这个功能!