搜索关键字,然后条件是找到它使用Perl从单词列表中搜索另一个关键字

时间:2012-07-12 13:48:08

标签: perl search

我关于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:搜索目录中的所有文件,并将文件名添加到打印输出中(文件名在一行中,后跟从文件中提取的行)

即使是针对类似的例子我也会感激...

1 个答案:

答案 0 :(得分:1)

  1. 将文件读入一个不错的数组:

    my @line = <FILE>;
    
  2. 搜索第一个字:

    my $i;
    foreach $i (0 .. $#line) {
      last if $line[$i] =~ /$firstWord/i;
    }
    
  3. 使用数组切片获取周围环境:

    my @surrounding = @line[$i-5 .. $i+5];
    

    然而,应该使用一些索引检查,如

    [0<=$i-5 ? 0 : $i-5 .. $i+5<@line ? $i+5 : $#line]
    
  4. 重复
  5. 利润
  6. 其余部分留给读者练习。

    突出显示写

        $line[$i] =~ s{($firstWord)}{<strong>$1</strong>};
    

    或类似,具体取决于您的输出媒体。 map是你的朋友。