2012-07-12 88 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是你的朋友。