免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2105 | 回复: 4
打印 上一主题 下一主题

请教这个日志分析的循环程序该怎么写好 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-03-07 17:35 |只看该作者 |倒序浏览
环境为 Windows          Active Perl 5.8.8

现在有很多按照每天的日期命名的zip文件包,名字格式为ex070301.zip,里面为IIS产生的24个小时的日志文件,名字格式为ex07030100.log-ex07030124.log
现在想要在从1月9号到2月28号的iis日志里面搜索某个关键字(比如是key),并统计关键字出现的行数,把结果输出(类似cat ex070301*.log|grep "key"|wc -l)。因为硬盘空间太小,没法一次性都解压完,所以只能解压一天,分析,返回行数,删除掉,再解压第二天,分析,返回行数,删除,如此反复直到2月28号。

小弟初学Perl,还请大家多多帮忙,看看这个怎么实现,感激不尽!

[ 本帖最后由 Ksharp 于 2007-3-7 17:37 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2007-03-07 17:42 |只看该作者
取文件名都写好了

  1. my $n;
  2. @date=localtime(time-$n*86400);
  3. my $shortyear = sprintf("%02d", ($date[5]+1900) % 100);
  4. my $mon = sprintf("%02d",$date[4]+1);
  5. my $day = sprintf("%02d",$date[3]);
  6. my $prefix = "ex";
  7. my $name = "$prefix$shortyear$mon$day";     
  8. my $zipfile = "$name.zip";
复制代码

后面的就卡住了,不知道这个循环该怎么设计

论坛徽章:
0
3 [报告]
发表于 2007-03-07 18:04 |只看该作者
这儿有个demo

  1. #!/usr/bin/perl -W
  2. #
  3. # File: pkcat.pl
  4. # License: GPL-2

  5. use strict;
  6. use warnings;
  7. use Archive::Zip qw( :ERROR_CODES :CONSTANTS );

  8. sub pkcat($) {
  9.     my $zipfile = shift;
  10.     my $pkzip = Archive::Zip->new();
  11.     if ($pkzip->read($zipfile) != AZ_OK) {
  12.        die "Read error: $!";
  13.     }

  14.     my @files = $pkzip->memberNames();
  15.     foreach my $file (@files) {
  16.         print "[$file]\n", ($pkzip->contents($file))[0], "\n\n";
  17.     }
  18. }

  19. pkcat('test.zip');
复制代码

论坛徽章:
0
4 [报告]
发表于 2007-03-07 18:08 |只看该作者

论坛徽章:
0
5 [报告]
发表于 2007-03-08 10:24 |只看该作者
多谢楼上的指点,但是这个只是说怎样处理压缩包,我要的还有1楼的那些要求,另外,最重要的是怎样处理循环,谢谢各位
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP