Chinaunix
标题:
请教这个日志分析的循环程序该怎么写好
[打印本页]
作者:
Ksharp
时间:
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 编辑
]
作者:
Ksharp
时间:
2007-03-07 17:42
取文件名都写好了
my $n;
@date=localtime(time-$n*86400);
my $shortyear = sprintf("%02d", ($date[5]+1900) % 100);
my $mon = sprintf("%02d",$date[4]+1);
my $day = sprintf("%02d",$date[3]);
my $prefix = "ex";
my $name = "$prefix$shortyear$mon$day";
my $zipfile = "$name.zip";
复制代码
后面的就卡住了,不知道这个循环该怎么设计
作者:
路小佳
时间:
2007-03-07 18:04
这儿有个demo
#!/usr/bin/perl -W
#
# File: pkcat.pl
# License: GPL-2
use strict;
use warnings;
use Archive::Zip qw( :ERROR_CODES :CONSTANTS );
sub pkcat($) {
my $zipfile = shift;
my $pkzip = Archive::Zip->new();
if ($pkzip->read($zipfile) != AZ_OK) {
die "Read error: $!";
}
my @files = $pkzip->memberNames();
foreach my $file (@files) {
print "[$file]\n", ($pkzip->contents($file))[0], "\n\n";
}
}
pkcat('test.zip');
复制代码
作者:
路小佳
时间:
2007-03-07 18:08
具体可以看
http://search.cpan.org/~adamk/Archive-Zip-1.18/lib/Archive/Zip.pm
作者:
Ksharp
时间:
2007-03-08 10:24
多谢楼上的指点,但是这个只是说怎样处理压缩包,我要的还有1楼的那些要求,另外,最重要的是怎样处理循环,谢谢各位
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2