加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Perl多进程处理Web日志

发布时间:2020-12-16 00:01:51 所属栏目:大数据 来源:网络整理
导读:不多说了,这个脚本是我刚学得时候写的。。 #!/usr/bin/perluse Getopt::Std;use vars qw( $opt_t $opt_l $opt_n $opt_p);use Parallel::ForkManager;print "-----------------------------------------n";print "| |n";print "| Poject of Log-grep |n";

不多说了,这个脚本是我刚学得时候写的。。

#!/usr/bin/perl
use Getopt::Std;
use vars qw( $opt_t $opt_l $opt_n $opt_p);
use Parallel::ForkManager;

print "-----------------------------------------n";
print "|                                       |n";
print "|      Poject  of   Log-grep            |n";
print "|                                       |n";
print "|    help: log-grep.pl -t 线程          |n";
print "|          -l 行数 -n 名称 -p 路径      |n";
print "-----------------------------------------n";


getopts('t:l:n:p:');
#把文件切割N份同步执行。
system "split -l $opt_l $opt_p $opt_n";
my $pm=new Parallel::ForkManager($opt_t);
my $dir=".";
my $file;
my @dir;
opendir (DIR,$dir) or die "Can't open the directory!";
$i=0;
@dir=readdir DIR;
foreach $file (@dir){
  if($file=~/$opt_n/){
     $i++;
     $pm->start and next;
     print "创建第$i个线程n";
     open IN,'<',$file;
  while(<IN>){
     @oldlist=split(/s/);
     $Date=$oldlist[3];
     #把特殊符号去掉
     $Date=~s/[//;
     #切割日期
     @home_date=split(/:/,$Date);
     #home_date[0] 就是准确的年月日
     #time就是小时/分钟/秒
     $time="$home_date[1]:$home_date[2]:$home_date[3]";
     #获取访问动作 
     $Option=$oldlist[5];
     #对特殊符号进行替换
     $Option=~s/"//;
     #获取访问协议
     $Agree=$oldlist[7];
     #对特殊符号进行替换
     $Agree=~s/"//;
     #获取客户端访问类型
     $client=$oldlist[11];
     #对特殊符号进行全局替换
     $client=~s/"//g;
     push(@check,$oldlist[0]);
     push(@check,$home_date[0]);
     push(@check,$time);
     push(@check,$Option);
     push(@check,$oldlist[6]);
     push(@check,$Agree);
     push(@check,$oldlist[8]);
     push(@check,$client);
     open OUT,'>>','./out.text';
     print OUT "IP地址:$check[0] 日期:$check[1] 时间:$check[2] 动作:$check[3] 路径:$check[4] 协议:$check[5] 响应:$check[6] 客户端:$check[7]n";
  }
  close OUT;
  close IN;
  $pm->finish;
  }
}
system "rm -rf $opt_n*";

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读