[Perl] question relativement facile.

question relativement facile. [Perl] - Perl - Programmation

Marsh Posté le 06-04-2006 à 11:51:54    

Bonjour,  
 
Je dois faire une manipulation en perl.  
 
J'ai le fichier texte suivant, et j'aimerais supprimer le texte entre les tableaux.
 
Voici le fichier texte d'origine:
 
-----------------------------debut du fichier texte          
                                            D I S P L A C E M E N T   V E C T O R
 
      POINT ID.   TYPE          T1             T2             T3             R1             R2             R3
             1      G      1.599571E+01   1.185148E-02  -3.111541E+00   1.784951E-06   5.286219E-02  -3.312E-06
             2      G      2.303846E+00   1.238950E-02  -1.913684E+00   1.784951E-06   5.286219E-02  -3.342E-06
          1000      G      1.009300E-03  -1.461770E-03  -8.895236E-02  -1.380486E-02   1.121588E-03   0.0
 
du texte en vrac (n'importe quel texte sur plusieurs lignes)
encore du texte en vrac (n'importe quel texte sur plusieurs lignes)§%=)&$§" )&%"§&%)&§!"%
 
          1001      G      6.655139E-04  -1.269913E-03  -1.202470E-02  -8.149052E-03   1.912397E-03   0.0
          1002      G      2.128328E-04  -4.430452E-04   2.143617E-02   9.356764E-04  -1.131274E-03   0.0
          1003      G      1.528846E-04  -3.164306E-04   1.279018E-02   1.256070E-03  -7.879398E-04   0.0
 
encore du texte en vrac (n'importe quel texte sur plusieurs lignes)§%=)&$§" )&%"§&%)&§!"%
encore du texte en vrac (n'importe quel texte sur plusieurs lignes)222ß395702865092435
 
          1004      G      4.770843E-04  -1.147985E-03   2.830649E-02  -3.521185E-03  -6.181516E-04   0.0
          1005      G      2.695279E-04  -3.397622E-04  -1.185465E-02  -1.379297E-04  -1.666789E-03   0.0
          1006      G      5.318802E-03  -1.288805E-02   1.703259E-01   3.963486E-02   2.937418E-02   0.0
          1007      G      3.142439E-03  -5.341556E-03   5.803642E-02   1.815232E-02   1.094855E-02   0.0
 
-----------------------------fin du fichier texte.
 
Voici ce que j'aimerais obtenir:
 
-----------------------------debut du fichier texte          
                                            D I S P L A C E M E N T   V E C T O R
 
      POINT ID.   TYPE          T1             T2             T3             R1             R2             R3
             1      G      1.599571E+01   1.185148E-02  -3.111541E+00   1.784951E-06   5.286219E-02  -3.342E-06
             2      G      2.303846E+00   1.238950E-02  -1.913684E+00   1.784951E-06   5.286219E-02  -3.312E-06
          1000      G      1.009300E-03  -1.461770E-03  -8.895236E-02  -1.380486E-02   1.121588E-03   0.0
          1001      G      6.655139E-04  -1.269913E-03  -1.202470E-02  -8.149052E-03   1.912397E-03   0.0
          1002      G      2.128328E-04  -4.430452E-04   2.143617E-02   9.356764E-04  -1.131274E-03   0.0
          1003      G      1.528846E-04  -3.164306E-04   1.279018E-02   1.256070E-03  -7.879398E-04   0.0
          1004      G      4.770843E-04  -1.147985E-03   2.830649E-02  -3.521185E-03  -6.181516E-04   0.0
          1005      G      2.695279E-04  -3.397622E-04  -1.185465E-02  -1.379297E-04  -1.666789E-03   0.0
          1006      G      5.318802E-03  -1.288805E-02   1.703259E-01   3.963486E-02   2.937418E-02   0.0
          1007      G      3.142439E-03  -5.341556E-03   5.803642E-02   1.815232E-02   1.094855E-02   0.0
 
-----------------------------fin du fichier texte.
 
Et là, je sais pas trop comment m'y prendre....
merci d'avance....  :whistle:

Reply

Marsh Posté le 06-04-2006 à 11:51:54   

Reply

Marsh Posté le 06-04-2006 à 11:53:44    

vire toutes les lignes qui commence pas par /\d+ /

Reply

Marsh Posté le 06-04-2006 à 12:00:06    

ah ouaaaiiiis...pas mal l'idée ...
 
pour virer, je dois faire un truc de ce genre là ?  
 
while (<> ){
s/^\d+//;    
}
 

Reply

Marsh Posté le 06-04-2006 à 12:22:48    

J'imagine que tu recopies la "nouvelle" version du fichier dans un nouveau, non?
Du coup c'était plus à ça que je pensais:

Code :
  1. while(<> ){
  2. print tonNouveauFichier $_ if $_ !~ /^\d+/;
  3. }


 
Par contre après réflexion si tu dois garder les lignes:

-----------------------------debut du fichier texte          
                                            D I S P L A C E M E N T   V E C T O R
 
      POINT ID.   TYPE          T1             T2             T3             R1             R2             R3


ces lignes vont sauter! Donc essaye de les garder "par ailleurs"!
 

Reply

Marsh Posté le 06-04-2006 à 12:30:01    

ah ok..
 
Comment ca "par ailleurs" s'il te plait ?  

Reply

Marsh Posté le 06-04-2006 à 12:38:06    

http://www.drfeelgood.de/burdon/images/9919071d.jpg
use your brain!!!

Reply

Marsh Posté le 06-04-2006 à 15:19:22    

en fait ca marche pas terrible, car il y a du texte qui commence avec des chiffres quelque fois...
 
Quand tu écris ca: !~  tu voulais pas écrire ca plutôt != ?
Mais moi j'aurais écrit == c'Est À dire si on reconnait la regex qui reconnait les lignes du type  
1001      G      6.655139E-04  -1.269913E-03  -1.202470E-02  -8.149052E-03   1.912397E-03   0.0  
 
alors on les imprime.
 
Mais ca marche toujours pas.... :(

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed