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

  FORUM HardWare.fr
  Programmation
  Perl

  suppression de ligne

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

suppression de ligne

n°1717257
warzoo
Posté le 14-04-2008 à 14:33:43  profilanswer
 


 
salut a tous,
 
j' ai un petit problème au niveau de perl. j'ai ecris un petit bout de code qui me permet de trier les lignes d'un fichier log à partir d' expressions régulières.
mon problème est que les lignes que j'ai trier (copier dans un autre fichier) je voudrais en meme temps les supprimer du fichier de base pour ne garder que les lignes qui sont moin remarquable...
 
ci-joint mon code:

Code :
  1. #!/usr/bin/perl
  2.                                         
  3. $chardon = 'gvar\adonis\2008-04-07\chardon.log';    
  4.  
  5. open(CHARDON, "<$chardon" )
  6. or die("Desole, impossible d'acceder a gvar\adonis\2008-04-07\chardon.log.\n" ) ;            
  7. @tabl1 = <CHARDON>;
  8. $chardbis = 'gvar\adonis\2008-04-07\chardrstlog.log';
  9. open(CHARDBIS, ">>$chardbis" )
  10. or die("Desole, impossible d'acceder a gvar\adonis\2008-04-07\chardrstlog.log.\n" );    
  11. print CHARDBIS "@tabl1";                                                
  12. close(CHARDON);                                        
  13. close(CHARDBIS);                                                        
  14.  
  15. open(CHARDBIS,"$chardbis" ) or
  16. die("Desole, impossible d'acceder a gvar\adonis\2008-04-07\chardrstlog.log.\n" );
  17.  
  18. $i = 1;                                            
  19. $a = "**********";                                                        
  20. while ($ligne1 = <CHARDBIS> )                                
  21. {    
  22.     if($ligne1 =~ /**********/)                                {
  23.     $chardlog = 'gvar\adonis\2008-04-07\chardlog**********.log';
  24.     open(CHARDLOG,">>$chardlog" ) or
  25.     die("Desole, impossible d'acceder a gvar\adonis\2008-04-07\chardlog**********.log.\n" );            
  26.     print CHARDLOG "$i $ligne1";                                
  27.     }
  28.     $i++;                                        
  29. }
  30.  
  31. print "fichiers triés avec succés et envoyés dans chardlog$a.log\n";    
  32. close(CHARDLOG);                                        
  33. close(CHARDBIS);                                                        
  34. open(CHARDBIS, "$chardbis" )
  35. or die("Desole, impossible d'acceder a gvar\adonis\2008-04-07\chardrstlog.log.\n" );        
  36. $j = 1;                                            
  37. $b ="**********";                                                
  38. while ($ligne2 = <CHARDBIS> )                            
  39. {    
  40.     if($ligne2 =~ /**********/)                            
  41.     {
  42.     $chardlog2 = 'gvar\adonis\2008-04-07\chardlog**********.log';     
  43.     open(CHARDLOG2,">>$chardlog2" )
  44.             or die("Desole, impossible d'acceder a gvar\adonis\2008-04-07\chardlog0xb74026ad.log.\n" );        
  45.     print(CHARDLOG2 "$j $ligne2" );                            
  46.     }
  47. $j++;                        
  48. }
  49. print "fichiers triés avec succés et envoyés dans chardlog$b.log\n";    
  50. close (CHARDLOG2);                                    
  51. close (CHARDBIS);


 
p.s:merci de ne pas me sortir des trucs du genre:"faut chercher!" parce que c'est déjà le cas,
sinon je n'aurais pas posté ce message.
et si certaines syntaxes vous paresses bizar c'est peut etre parce que j'utilise ActivePerl...
 
elmoricq-edit : je me suis permis de mettre ton code entre balises code, histoire de le rendre lisible


Message édité par warzoo le 17-04-2008 à 14:35:50
mood
Publicité
Posté le 14-04-2008 à 14:33:43  profilanswer
 

n°1717260
Elmoricq
Modérateur
Posté le 14-04-2008 à 14:39:57  profilanswer
 

Bon déjà y a un problème : tu réouvres un bazillion de fois tes fichiers dans les boucles. Tu devrais les ouvrir qu'une seule fois avant la boucle.
 
Ensuite, je ne vois aucun tri nul  part. Sans doute veux-tu parler de filtre ?
 
Enfin, je ne connais pas d'autre moyen pour supprimer une ligne dans un fichier que de réécrire ce dernier intégralement (sans la/les ligne(s) à supprimer) dans un fichier temporaire, que tu utilises ensuite pour écraser l'ancienne version.

n°1717261
warzoo
Posté le 14-04-2008 à 14:43:44  profilanswer
 

merci, je vais déjà virer mes clotures et réouvertures.
effectivement, c'est plus un filtre qu'un tri.
 
le fait est que j'ai deja essayé de réécrire dans le fichier mais sans résultat ( en meme temps, je m'y prend certainement mal)
 
p.s: réponse express lol

n°1717385
warzoo
Posté le 14-04-2008 à 17:55:59  profilanswer
 

en fait, j'ai reussi d'une autre façon mais merci quand meme.


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

  suppression de ligne

 

Sujets relatifs
suppression automatique de ligne sur excel [vba][résolu] suppression d'une ligne dans un fichier txt
Macro Suppression ligneProteger une ligne d'une table contre la suppression(mysql)
suppression ou cacher ligne sur bouble infini[résolu]Suppression ligne tableau
Gérer la suppression illégale d'une ligne dans un datagridsuppression d'une ligne d'un fichier en vba
[Java + WebObject] Suppression d'une ligne d'une bd (Resolu)[PHP] [mySQL] suppression d'une ligne ds la base de donné
Plus de sujets relatifs à : suppression de ligne


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