Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1485 connectés 

  FORUM HardWare.fr
  Programmation
  Perl

  recherche d'un mot dans un fichier

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

recherche d'un mot dans un fichier

n°2293871
fatimaabs
Posté le 19-12-2016 à 21:08:50  profilanswer
 

Bonsoir tout le monde,  
 
Je débute en perl, en fait j'ai besoin de faire un code perl permettant de chercher l'occurrence d'un mot dans un ensemble des fichiers, en fait le résultat est le nom de premier fichier contenat ce mot ...
quelqu'un peut m'aider SVP ?

mood
Publicité
Posté le 19-12-2016 à 21:08:50  profilanswer
 

n°2293883
rat de com​bat
attention rongeur méchant!
Posté le 19-12-2016 à 23:58:46  profilanswer
 

http://perldoc.perl.org/functions/readdir.html pour faire la liste des fichiers, puis les fonctions usuelles pour ouvrir les fichiers un a un et http://perldoc.perl.org/functions/index.html pour savoir si il y a le mot cherché. Pour les détails voir sur internet, c'est pas difficile.

n°2293885
gilou
Modérateur
Modzilla
Posté le 20-12-2016 à 02:01:46  profilanswer
 

use File::Grep
 
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°2293903
rat de com​bat
attention rongeur méchant!
Posté le 20-12-2016 à 12:03:36  profilanswer
 

gilou a écrit :

use File::Grep

 

A+,

Ah ben oui, j'aurais dû y penser qu'il existe déjà un module tout fait pour n'importe quelle tâche en Perl. :lol:


Message édité par rat de combat le 20-12-2016 à 12:04:13
n°2293907
fatimaabs
Posté le 20-12-2016 à 14:19:09  profilanswer
 


Bonjour,
 
Merci pour les réponses , en fait j'ai essayé ce code:  
 

Code :
  1. use strict;
  2. use warnings;
  3. use diagnostics;
  4. use utf8;
  5. use autodie;
  6. use File::Spec;
  7. use CGI::Carp 'fatalsToBrowser';
  8. my $dir = "/home/dossier";
  9. my @listeFichiersMem;
  10. #open my $FIC1, "<", $file1 or die "Can't open $file1 for reading: $!";
  11. # read all entries in the directory:
  12. opendir DIR, $dir or die "Cannot open $dir $!";
  13. @listeFichiersMem = grep { !/^\.\.?$/ } readdir DIR;
  14. my @sorted = sort @listeFichiersMem;
  15. my $size = @listeFichiersMem;
  16. my $mot="pomme";
  17. foreach my $File  (@sorted) {
  18. #print "$File\n"; $File est le nom de fichier
  19.         open my $FIC, "<", "$dir/$File" or die "!!!!Can't open $File for reading!!!!";
  20. my @tab = <FIC>;
  21. my $sizeTab = $#tab+1;
  22. print $sizeTab; print "\n";
  23. for (my $i = 0; $i < $sizeTab; $i++)
  24. {
  25. chomp();
  26. chomp($tab[$i]);
  27. chomp($mot);
  28. if($tab[$i] eq $mot)
  29. {
  30. print "le mot $mot existe dans le fichier $File"; print "\n";
  31. }
  32. else
  33. {
  34. print "erreur";
  35. }
  36. }
  37. }


 
Mais il y a un problème au niveau de lecture dans les fichiers ..

n°2293925
fatimaabs
Posté le 20-12-2016 à 21:09:52  profilanswer
 

Bonsoir à tous, c'est encore moi.. j'arrive pas à résoudre le problème , en fait mon bjectif est ouvrir un dossier des fichiers, rechercher un mot dans ces fichier , le programme doit afficher le premier fichier contenant ce mot et s'arrête dès qu'il trouve le mot,
voilà le code  

Code :
  1. #
  2. # GetFilesList - Renvoie la liste des fichiers d'un repertoire (en mode recursif)
  3. #
  4. sub GetFilesList
  5. {
  6.         my $Path = $_[0];
  7.         my $FileFound;
  8.         my @FilesList=();
  9.         # Lecture de la liste des fichiers
  10.         opendir (my $FhRep, $Path)
  11.                 or die "Impossible d'ouvrir le repertoire $Path\n";
  12.         my @Contenu = grep { !/^\.\.?$/ } readdir($FhRep);
  13.         closedir ($FhRep);
  14.         foreach my $FileFound (@Contenu) {
  15.                 # Traitement des fichiers
  16.                 if ( -f "$Path/$FileFound" ) {
  17.                         push ( @FilesList, "$FileFound" );
  18.                 }
  19.                 # Traitement des repertoires
  20.                 elsif ( -d "$Path/$FileFound" ) {
  21.                         # Boucle pour lancer la recherche en mode recursif
  22.                         push (@FilesList, GetFilesList("$FileFound" ) );
  23.                 }
  24.         }
  25.         return @FilesList;
  26. }
  27. #
  28. # Boucle principale
  29. #
  30. my $mot="fruit";
  31. chomp($mot);
  32. my @Files = GetFilesList ("/home/lenovo/Bureau/dossier" );
  33. my @sorted = sort @Files;
  34. LOOP1: foreach my $File  (@sorted) {
  35.     open my $FIC, "<", "$dir/$File" or die "!!!!Can't open $File for reading!!!!";
  36.     while (my $line = <$FIC> ) {
  37.  chomp($line);
  38.         if ($line =~ /$mot/) {
  39.             print "$File: $line"; print "ok"; print "\n";
  40.             last LOOP1;
  41.         }
  42.     }
  43. }


 
 
mais il y a un pblme dans l'ouverture de fichier en lecture!!!

n°2293998
gilou
Modérateur
Modzilla
Posté le 23-12-2016 à 11:13:11  profilanswer
 

> mais il y a un pblme dans l'ouverture de fichier en lecture!!!  
Fermer les fichiers ouverts, ça peut être utile...
Un truc dans ce style la, ça devrait le faire (mais j'ai pas teste, pas le temps)

Code :
  1. #!/usr/bin/perl
  2. use strict;
  3. use warnings;
  4. use autodie;
  5.  
  6. sub GetFilesList {
  7.     .................
  8. }
  9.  
  10. my $dir = '/home/lenovo/Bureau/dossier';
  11. my $mot = "fruit";
  12. my @files = sort(GetFilesList($dir));
  13. my $found = 0;
  14.  
  15. foreach my $file  (@files) {
  16.    open(my $fh, "<", $file);
  17.    while (<$fh> ) {
  18.          if (/\b$mot\b/) {
  19.            print "$file: $_ ok\n";
  20.            $found = 1;
  21.            last;
  22.        }
  23.    }
  24.    close($fh);
  25.    last if ($found);
  26. }


A+,


Message édité par gilou le 23-12-2016 à 11:15:27

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Perl

  recherche d'un mot dans un fichier

 

Sujets relatifs
besoin de gagner du temps sur le cacul de recherche dans gros fichier[Cobol Gcos] Recherche fichier indexé
[Shell Linux] Recherche dans un fichier evoluéVBS copie de fichiers avec recherche de nom
Recherche d'un mot dans un fichier[Powershell] Recherche fichier à partir d'un csv
[Shell/Batch] Recherche d'une chaîne de caractère dans un fichierrecherche un moyen d'integrer du css a un fichier js
Batch Recherche fichier à partir d'une liste et CopierPowerShell Supprimer Fichier suite à une recherche de chaine de caract
Plus de sujets relatifs à : recherche d'un mot dans un fichier


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR