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