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

  FORUM HardWare.fr
  Programmation
  Perl

  recuperer des lignes d'un txt selonune condition

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

recuperer des lignes d'un txt selonune condition

n°1884902
Bijnok
Posté le 15-05-2009 à 11:15:36  profilanswer
 

Bonjour a tous,
 
je souhaite ouvrir un fichier txt, copier la premiere ligne dans un nouveau document txt puis parcourir chaque ligne et la copier entierement dans le nouveau fichier si le deuxième mot correspond à un choix préétabli. En fait c'est un fichier de données (opur faire des stats) que j'ai mais tout ne m'est pas utile; en colonne on a les variables et en lignes les "individus"; le but est de récupérer tout les individus pour qui vérifie une valeur de la deuxieme variable (de type charactere)
 
Il est possible que Perl ne soit pas le langage le plus adapté pour répondre à mon probleme, je pense notament au langage Awk mais je ne le connais pas très bien pour l'instant.
 
!#/usr/bin/perl -w
 
open(F, "chemin-fichier-a-lire" ) || die("erreur à l'ouverture" );
open(G, ">chemin-fichier-a-ecrire" ) || die("erreur à l'ouverture 2" );
print G (<F> );  # copie de la premiere ligne
 
while(<F> ){    # tant q'uil y a des lignes
$var=$_;
if($var =~ ^/[a-zA-Z0-9]*/\s/motchoisi){              # si le deuxieme mot == "motchoisi"
print G ($_);   # ecriture de la ligne dans nouveau fichier
}
 
close(F);
close(G);

 
Mon probleme reside dans l'expression réguliere a mettre dans le if(), je pense que ça marche mais j'aimerai une confirmation voir, si ça ne marche pas, une rectif.
 
Aussi la je dois creer le nouveau fichier avant de lancer le script, y-a-t'il moyen de le creer automatiquement?
 
Merci par avance
 
 
[edit] est-ce qu'une fonction permettant de repérer une chaine précise dans une ligne existe? du type dispatch()


Message édité par Bijnok le 15-05-2009 à 13:54:35
mood
Publicité
Posté le 15-05-2009 à 11:15:36  profilanswer
 

n°1885391
gilou
Modérateur
Modzilla
Posté le 17-05-2009 à 15:24:38  profilanswer
 

Il y a des erreurs dans ce que tu as ecrit, la ou tu mets les /
L'expression régulière que tu cherches devrait être du style:
/^\w+\s+motchoisi\s+/
^ -> début de ligne
\w+ -> un mot
\s+ -> un ou plusieurs blancs
 
A+,


Message édité par gilou le 17-05-2009 à 16:10:10

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°1885401
gilou
Modérateur
Modzilla
Posté le 17-05-2009 à 16:24:08  profilanswer
 

Un exemple de solution possible
 

Code :
  1. #!/usr/bin/perl
  2. #
  3. use warnings;
  4. use strict;
  5.  
  6. open my $FIN,  '<', 'input.txt'  or die "erreur 1 a l'ouverture";
  7. open my $FOUT, '>', 'output.txt' or die "erreur 2 a l'ouverture";
  8. print $FOUT ($_ = <$FIN> );
  9. print $FOUT (grep /^\w+\s+motchoisi\s+/o, <$FIN> );
  10. close $FIN;
  11. close $FOUT;


Citation :

est-ce qu'une fonction permettant de repérer une chaine précise dans une ligne existe?

Comme précédemment, avec la chaine cherchée dans le grep (et une regexp ad hoc si on a des restrictions contextuelles, comme par exemple le fait que la chaine soit un mot, ou on utiliserait \bchaine\b)
 
Le script de l'exemple marche sauf si le fichier en entrée est vide (a tester avant et decider de ce qu'on fait: une erreur ou bien un fichier de sortie vide).
A+,


Message édité par gilou le 17-05-2009 à 17:02:58

---------------
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

  recuperer des lignes d'un txt selonune condition

 

Sujets relatifs
recuperer le resultat d'un javascript dans un formulaireRécupérer une variable du shell [fpc lazarus debian]
Récupérer la première ligne d'une celluleRécupérer variables de javascript en php (Ajax)
Récupérer variables de javascript en php (Ajax)Fixer la largeur maximale des lignes d'une page HTML
[résolu] Récupérer résultat commande avec méthode runphp:récupérer des données d'une autre page
Récuperer une valeur d'un onData, parser un fichier srtRécuperer le chemin <input type="file"
Plus de sujets relatifs à : recuperer des lignes d'un txt selonune condition


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