2012-07-12 55 views
-1
单词的列表条件

我关于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?搜寻关键字,然后发现它寻找另一个关键字从使用Perl

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

如果可能的话,两个扩展:

扩展1:在打印输出中突出关键词

扩展2:从目录搜索所有文件和文件名添加到打印输出(文件名在一行中,随后从该文件中提取的线)

在该文件,如果引导到类似的例子我甚至会感激......

回答

1
  1. 读为一个不错的数组:

    my @line = <FILE>; 
    
  2. 硒拱为第1个字:

    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是你的朋友。