我关于Perl的问题非常类似于Python在这里回答的问题: How can I search within a document for a keyword and then subsequent key words within a set number of lines of the original keyword in Python?
这包括搜索一个关键字,然后从原始关键字附近的一个关键字列表中搜索另一个关键字(比如你有一个4个单词的列表)(比如加上减去5行),然后在匹配时打印出一个范围行(比如原始关键字加减去20行)
如果可能的话,有两个扩展名:
分机1:在打印输出中突出显示关键词
Ext 2:搜索目录中的所有文件,并将文件名添加到打印输出中(文件名在一行中,后跟从文件中提取的行)
即使是针对类似的例子我也会感激...
答案 0 :(得分:1)
将文件读入一个不错的数组:
my @line = <FILE>;
搜索第一个字:
my $i;
foreach $i (0 .. $#line) {
last if $line[$i] =~ /$firstWord/i;
}
使用数组切片获取周围环境:
my @surrounding = @line[$i-5 .. $i+5];
然而,应该使用一些索引检查,如
[0<=$i-5 ? 0 : $i-5 .. $i+5<@line ? $i+5 : $#line]
其余部分留给读者练习。
突出显示写
$line[$i] =~ s{($firstWord)}{<strong>$1</strong>};
或类似,具体取决于您的输出媒体。 map
是你的朋友。