
是要一个正则表达式匹配3行内容,还是多个表达式分别匹配3个内容:对于第一个,可以使用模式:m/^_\\n$/;对于空行:可以使用模式:m/^\\s\\n$/;如果同时匹配,可以将两个模式合并:m/^[_|\\s]\\n$/;
使⽤Perl合并⽂件使⽤Perl合并⽂件
有时需要将整个⽬录下的⼩⽂件合并到⼀个⽂件中,以便查阅检索
特性
整个⽬录完全遍历,⾃动存⼊单个⽂件
顺序遍历⽂件
待合并的⽬录
合并后的⽂件内容
syscfg/test1
syscfg/test2
uart/uart7/uart7_dma1
uart/uart7/uart7_dma2
wwdg/prescaler
Perl代码
#!/usr/bin/perl
use warnings;
###########################################
#/mergelstpl lst
###########################################
my $indir = $ARGV[0];
opendir DIR, $indir or die "Connot open $indir: $!"; #得到⽬录句柄
unlink "templst";
open(OUTFILE, ">>templst") || die ("Could not open file templst ! \n"); #输出⽂件句柄
foreach my $file (sort readdir DIR){ #⽬录下⽂件排序后遍历⽂件
if($file =~ /^\/){
next; #''''⽬录去除,不包括在遍历的范围之内
}
print "$indir$file\n";
open(INFILE, "$indir/$file") || die ("Could not open file $file ! \n"); #打开⽬录下的⽂件 while ($line = <INFILE>){ #循环输出到输出⽂件中,合并 chomp($line);
print OUTFILE "$line \n";
}
print OUTFILE "\n\n";
close INFILE;
}
close OUTFILE;
rename 'templst','merge_lst'; #⽂件重名名
print "\n merge_lst\n\n";
¥
6
百度文库VIP限时优惠现在开通,立享6亿+VIP内容
立即获取
使用Perl合并文件
使⽤Perl合并⽂件使⽤Perl合并⽂件
有时需要将整个⽬录下的⼩⽂件合并到⼀个⽂件中,以便查阅检索
特性
整个⽬录完全遍历,⾃动存⼊单个⽂件
顺序遍历⽂件
待合并的⽬录
合并后的⽂件内容
syscfg/test1
syscfg/test2
第 1 页
uart/uart7/uart7_dma1
uart/uart7/uart7_dma2
wwdg/prescaler
Perl代码
#!/usr/bin/perl
use warnings;
###########################################
#/mergelstpl lst
###########################################
第 2 页
my $indir = $ARGV[0];
opendir DIR, $indir or die "Connot open $indir: $!"; #得到⽬录句柄
unlink "templst";
open(OUTFILE, ">>templst") || die ("Could not open file templst ! \n"); #输出⽂件句柄
foreach my $file (sort readdir DIR){ #⽬录下⽂件排序后遍历⽂件
if($file =~ /^\/){
next; #''''⽬录去除,不包括在遍历的范围之内
第 3 页
}
print "$indir$file\n";
open(INFILE, "$indir/$file") || die ("Could not open file $file ! \n"); #打开⽬录下的⽂件 while ($line = <INFILE>){ #循环输出到输出⽂件中,合并 chomp($line);
print OUTFILE "$line \n";
}
print OUTFILE "\n\n";
close INFILE;
}
第 4 页
close OUTFILE;
rename 'templst','merge_lst'; #⽂件重名名
print "\n merge_lst\n\n"
这个是没办法已经匹配存入新数组之后去获得的,不过可以尝试其他方式,代码修改为以下吧:
for(my $i = 0; $i < @all_file; $i++){
if($all_file[$i]=~/$str/g){
print "Matched in line:$_,Index is:$i\n"
}
}
这样可以变相实现你的要求
以上就是关于perl 正则表达式 求一个正则表达式。全部的内容,包括:perl 正则表达式 求一个正则表达式。、perl合并文件成空文件夹、perl获取$_的当前数组下标等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)