У меня есть большой файл, который содержит 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;
Это дает первое вхождение ключевого слова. Но мне нужно все вхождение, а также ключевое слово должно точно совпадать.
Проблема, с которой я сталкиваюсь при точном совпадении, например, у меня есть ключевые слова «привет» и «привет, мир».
если мне нужно сопоставить «привет», он возвращает номер строки, который содержит «привет, мир», и мой скрипт должен соответствовать только «привет» и указывать номер строки.