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

  FORUM HardWare.fr
  Programmation
  Perl

  [Perl] effacer début fichier texte

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Perl] effacer début fichier texte

n°1339401
fiftoman
Posté le 05-04-2006 à 09:19:20  profilanswer
 

Bonjour,  
 
 
j'aimerais coder un script en perl qui m'efface le début d'un fichier texte et le réécrit dans un nouveau fichier texte.  
 
En fait, le début de ce fichier s'arrête quand je rencontre le mot " D I S P L A C E M E N T " dans ce fichier.  
 
à partir de ce mot, le nouveau fichier créé doit rester identique au fichier texte d'origine.  
 
Vous savez comment on fait ca svp ?  
merci
 

mood
Publicité
Posté le 05-04-2006 à 09:19:20  profilanswer
 

n°1339436
franceso
Posté le 05-04-2006 à 09:58:10  profilanswer
 

un truc dans ce genre là, ça te sort toutes les lignes du fichier donné en argument à partir du moment où on rencontre le mot DISPLACEMENT. Je suis pas sûr d'avoir compris ce que tu voulais exactement, mais ça ne devrait pas en être trop loin... :)

Code :
  1. #! /usr/local/bin/perl                                                                                                                   
  2. $found = 0;
  3. while( <> )
  4.     $found = 1 if /DISPLACEMENT/;
  5.     print if $found;
  6. }


Message édité par franceso le 05-04-2006 à 09:59:00

---------------
TriScale innov
n°1339833
fiftoman
Posté le 05-04-2006 à 16:25:41  profilanswer
 

c'est cool, ca marche !!
 
merci !  
J'ai d'ailleurs rajouté $found = 0 if /fintexte/
pour qu'il s'arrete quand il detecte fintexte, ca fonctionne également.
 
Encore merci !  
:-)

n°1339842
franceso
Posté le 05-04-2006 à 16:31:26  profilanswer
 

fiftoman a écrit :

J'ai d'ailleurs rajouté $found = 0 if /fintexte/
pour qu'il s'arrete quand il detecte fintexte

tu devrais plutôt sortir du while quand il détecte "fintexte" : ça téviterait de parcourir la fin du fichier qui ne t'intéresse pas.


---------------
TriScale innov
n°1339952
fiftoman
Posté le 05-04-2006 à 18:57:35  profilanswer
 

En fait, je vois pas comment le faire sortir de la boucle..
 
Voilà mon code:
 
#! /usr/freeware/bin/perl
use strict;
use warnings;
 
my $found = 0;
 
@ARGV = qw (fichier1.txt);
open(F06bis,">>fichier2.txt" ) || die "impossible to create this file: $!\n";
 
while (<> )
{
$found = 1 if /mot_de_debut/;
$found = 0 if /mot_de_fin/;
print F06bis if $found;
}
 
 
Par contre j'ai un probleme avec les gros fichiers. Je m'explique:
 
Pour les petits fichiers, il me coupe bien mon texte comme il faut pour le mettre dans fichier2.txt. Donc pas de problème.
 
Par contre, si le fichier1.txt est très gros, il me coupe le début mais pas la fin.... C'est À dire que fichier2.txt commence effectivement à 'mot_de_debut' mais il se finit comme le fichier1.txt à la seule différence qu'il m'a effacé juste 'mot_de_fin'.
 
Il y a une limite de taille de fichier pour les boucles en perl ????
 
Merci.
Miguel

n°1340141
franceso
Posté le 05-04-2006 à 22:16:18  profilanswer
 

Citation :

En fait, je vois pas comment le faire sortir de la boucle..


la commande 'last' te permet de sortir directement de la boucle en cours. dans ton cas, il suffit de mettre

last if /mot_de_fin/


 

Citation :

Par contre, si le fichier1.txt est très gros, il me coupe le début mais pas la fin.... C'est À dire que fichier2.txt commence effectivement à 'mot_de_debut' mais il se finit comme le fichier1.txt à la seule différence qu'il m'a effacé juste 'mot_de_fin'.

si l'utilisation de 'last' ne règle pas ce problème, je ne sais pas ce que tu peux faire. Je n'ai jamais été confronté à ce type de problèmes
 

Citation :

@ARGV = qw (fichier1.txt);
...
while( <> )

il serait plus propre d'ouvrir directement 'fichier1.txt' en lecture


Message édité par franceso le 05-04-2006 à 22:16:29

---------------
TriScale innov
n°1340408
fiftoman
Posté le 06-04-2006 à 11:45:02  profilanswer
 

ok merci.  
 
Pour le problème avec les gros fichiers, on m'a dit que ca dépend de la RAM du PC, c'est ce que j'ai entendu dire, mais rien n'est sûr à 100 %..
 
Donc bon, je crois que le sujet est clos jusqu'à nouvel ordre..
 
bonne journée !  


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

  [Perl] effacer début fichier texte

 

Sujets relatifs
Taille de fichier textetester si un fichier est vide
Lecture dans un fichier texte avec separateur , ??Vider la corbeille avec un fichier *.vbs
Fichier effacer contenu vb.netalignement d'un checkbox et d'un texte <label>
Algo de cryptage de texte 
Plus de sujets relatifs à : [Perl] effacer début fichier texte


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