-1

我关于 Perl 的问题与此处回答的涉及 Python 的问题非常相似: 如何在文档中搜索关键字,然后在 Python 中原始关键字的一组行内搜索后续关键字?

这包括搜索一个关键字,然后在原始关键字附近(例如加减 5 行)的关键字列表(例如,您有 4 个单词的列表)中搜索另一个关键字,然后在匹配时打印出一系列行(说从原始关键字加上减去 20 行)

如果可能,两个扩展:

Ext 1:在打印输出中突出显示关键词

Ext 2:从目录中搜索所有文件并将文件名添加到打印输出(文件名在一行中,后跟从文件中提取的行)

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

4

1 回答 1

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. 利润

其余的留给读者作为练习。

用于高亮写

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

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

于 2012-07-12T15:24:16.557 回答