400000行を含む大きなファイルがあり、各行にはタブで区切られた多数のキーワードが含まれています。
また、一致するキーワードのリストを含むファイルがあります。このファイルがルックアップとして機能するとします。
したがって、ルックアップテーブルの各キーワードについて、指定されたファイルで出現するすべてのキーワードを検索する必要があります。そして、オカレンスの行番号を出力する必要があります。
私はこれを試しました
#!usr/bin/perl
use strict;
use warnings;
my $linenum = 0;
print "Enter the file path of lookup table:";
my $filepath1 = <>;
print "Enter the file path that contains keywords :";
my $filepath2 = <>;
open( FILE1, "< $filepath1" );
open FILE2, "< $filepath2" ;
open OUT, ">", "SampleLineNum.txt";
while( $line = <FILE1> )
{
while( <FILE2> )
{
$linenum = $., last if(/$line/);
}
print OUT "$linenum ";
}
close FILE1;
これにより、キーワードが最初に出現します。しかし、私はすべての出現が必要であり、キーワードも完全に一致する必要があります。
完全一致で直面している問題は、たとえば、「hello」と「helloworld」というキーワードがあることです。
「hello」と一致させる必要がある場合は、「hello world」を含む行番号が返されます。また、スクリプトは「hello」とのみ一致し、その行番号を指定する必要があります。