Perl脚本:从包含多个文件的文件夹中搜索字符串

时间:2013-07-11 08:29:02

标签: perl

我有一个包含多个.txt文件的文件夹。我想在这些文本文件中查看几个字符串,并将输出作为out.txt提供,其中包含5行以上,并且位于所定位字符串下方5行。

2 个答案:

答案 0 :(得分:2)

使用grep更容易:

grep -A 5 -B 5 'searchstring' *.txt > a.out

使用Perl: - )

use strict;use warnings;
`grep -A 5 -B 5 'searchstring' *.txt > a.out`;
die "Something went wrong: $!" if $?;

答案 1 :(得分:0)

如果你坚持使用perl oneliner;

perl -n -e 'if (/searchStringHere/) {print "\n\n\n\n\n$_\n\n\n\n\n"}' *.txt

如果grep解决方案适合您,我认为它更优雅......

<强>更新

它让我觉得你可能是一个Windows用户,所以你没有grep ......

此代码未经过测试,因为我没有在此计算机上安装perl,但它应该可以正常工作: !#yourperl / perl的

$flag, $l1, $l2, $l3, $l4, $l5, $l6;
$cnt = 5;
$file = shift;
open("$file") || die "can't open $file\n";
while (<>) {
 $l1 = $l2; # starting with reserving the lines for back print
 $l2 = $l3;
 $l4 = $l5;
 $l5 = $l6;
 $l6 = $_;
 if (/your string here/) {
   $cnt = 5;
   print ($l1$l2$l3$l4$l5$l6);# print line + 5 prev lines
   next
 }
 if ($cnt >0) { # print the next 5 lines
    print $l6;
    $cnt--;
 } 
}