Perl 懒惰匹配

来源:互联网 发布:windows nginx 下载 编辑:程序博客网 时间:2024/04/30 22:39
[grid@devrac1 ~]$ cat sum.pl 
if ( $#ARGV < 0 ){  
        print "please input your file!\n";
        exit(-1);  
    } 
$logfile= $ARGV[0];  
my %log;
open (LOG ,"<","$logfile");
while (<LOG>) {
chomp;
if ($_ =~ /^\[\[seri(.*)(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})/){
print "\$1 is $1\n";
$var= (split /_/, (split /:/,$_)[2])[0];
$log{$var}++;
}
}
#print  %log;
while(my($ip, $times) = each %log) {
     print "$ip  $times\n";
     }
[grid@devrac1 ~]$ perl sum.pl 1.log
$1 is :288i19BF:122.96.47.8_se[[seri:288i19BF:12
$1 is :288i19BF:122.96.47.8_se[[seri:288i19BF:12
$1 is :288i19BF:122.96.47.8_se[[seri:288i19BF:12
$1 is :288i19BF:192.96.47.8_se[[seri:288i19BF:19
192.96.47.8  1
122.96.47.8  3




这里直接贪婪的匹配到了:288i19BF:192.96.47.8_se[[seri:288i19BF:19
-----------------------------------------------------------------


[grid@devrac1 ~]$ cat sum.pl 
if ( $#ARGV < 0 ){  
        print "please input your file!\n";
        exit(-1);  
    } 
$logfile= $ARGV[0];  
my %log;
open (LOG ,"<","$logfile");
while (<LOG>) {
chomp;
if ($_ =~ /^\[\[seri(.*?)(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})/){
print "\$1 is $1\n";
$var= (split /_/, (split /:/,$_)[2])[0];
$log{$var}++;
}
}
#print  %log;
while(my($ip, $times) = each %log) {
     print "$ip  $times\n";
     }
[grid@devrac1 ~]$ perl sum.pl 1.log
$1 is :288i19BF:
$1 is :288i19BF:
$1 is :288i19BF:
$1 is :288i19BF:
192.96.47.8  1
122.96.47.8  3


这里匹配到第一个就停止了


[grid@devrac1 ~]$ cat 1.log 
[[seri:288i19BF:122.96.47.8_se[[seri:288i19BF:122.96.47.8ssionid:
[[seri:288i19BF:122.96.47.8_se[[seri:288i19BF:122.96.47.8ssionid:
[[seri:288i19BF:122.96.47.8_se[[seri:288i19BF:122.96.47.8ssionid:
[[seri:288i19BF:192.96.47.8_se[[seri:288i19BF:192.96.47.8ssionid:

0 0
原创粉丝点击