Trouver tous les événement de la chaîne dans un fichier et imprimer son numéro de ligne en Perl

J'ai un gros fichier qui contient 400000 lignes, chaque ligne contient le plus grand nombre de mots-clés séparés par une tabulation.

Et aussi, j'ai un fichier qui contient la liste des mots-clés à rechercher. Dire ce fichier agir comme un coup d'oeil.

Donc, pour chaque mot-clé dans la table j'ai besoin de rechercher tous son apparition dans le fichier donné. Et doit imprimer le numéro de ligne de l'événement.

J'ai essayé cette

#!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;

Cela donne à la première occurrence du mot clé. Mais j'ai besoin de tout l'événement et également le mot-clé doit être exactement les mêmes.

Le problème suis confronté en correspondance exacte est, par exemple, j'ai les mots "bonjour" et "hello world"

si j'en ai besoin pour correspondre à "bonjour", il renvoie le numéro de la ligne qui contient "bonjour le monde" aussi
mon script doit correspondre seulement "bonjour" et de donner son numéro de ligne.

Simple: Si l'efficacité n'est pas un gros souci, vous pouvez simplement charger tous les mots-clés fichier2 dans un tableau. Alors en boucle sur fichier1 et sur chaque ligne de votre recherche tous les mots clés de la matrice.
pourriez-vous elabourate sur le dernier paragraphe? voulez-vous une recherche de "bonjour" return "hello world" ou pas?
Si je cherche bonjour tout le monde, il devrait correspondre seulement que la parole, non pas de son sous-chaîne comme bonjour .

OriginalL'auteur Sishanth | 2012-12-19