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

  FORUM HardWare.fr
  Programmation
  Perl

  [perl]: copie fichier1 vers fichier2 sauf le début

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[perl]: copie fichier1 vers fichier2 sauf le début

n°1346091
fiftoman
Posté le 13-04-2006 à 14:47:06  profilanswer
 

Bonjour,  
 
J'aimerais faire quelque chose sous perl:
 
Je lis un  fichier texte, et je le copie dans un autre fichier texte dès que je trouve le mot "DISPLACEMENT" ainsi que les 3 lignes précédent ce mot.
 
C'est à dire que par exemple, si mon fichier de départ est:
 
llllll
kkkkk
lll
ooo
ppp
o
phdoj
230487130
DISPLACEMENT
etc....jusque fin de fichier
 
mon nouveau fichier est :  
 
o
phdoj
230487130
DISPLACEMENT
etc....jusque fin de fichier
 
 
Voilà, j'ai déjà réussi à écrire dans le nouveau fichier à partir du mot DISPLACEMENT, mais je ne sais pas comment conserver les 3 lignes d'avant..
Qqn pourrait m'aider svp ?
merci.

mood
Publicité
Posté le 13-04-2006 à 14:47:06  profilanswer
 

n°1346115
franceso
Posté le 13-04-2006 à 15:03:35  profilanswer
 

tu conserves en permanence une copie des 3 lignes que tu viens de lire. Dès que tu vois "DISPLACEMENT", tu affiche ces trois lignes puis tu continues normalement à afficher les lignes restantes.


---------------
TriScale innov
n°1346160
fiftoman
Posté le 13-04-2006 à 15:30:48  profilanswer
 

oui merci, mais en fait mon problème réside dans le fait que je ne sais pas comment copier ces 3 lignes à la base...
je ne sais lire que jusque le mot clé (DISPLACEMENT) TOUTES LES LIGNES qui le precedent, mais pas juste les 3 lignes d'avant...
Tu vois ?

n°1346166
fiftoman
Posté le 13-04-2006 à 15:35:33  profilanswer
 

#! /usr/freeware/bin/perl  
use warnings;
use strict;
open TTXT ,"fichier1.txt" or die "E/S";  
open NEW ,">nouveau.txt" or die "E/S";  
 
while(<TTXT> ){  
next unless (/D I S P L A C E M E N T   V E C T O R/i../END OF JOB/i);  
print NEW $_;  
}
 
Poru le moment j'en suis là.
Mais les 3 lignes précédent le mot clé n'y sont pas.

n°1346196
franceso
Posté le 13-04-2006 à 16:07:09  profilanswer
 

tu as trois variables n_3, n_2, n_1 qui gardent les trois dernières lignes que tu as lues. dès que tu rencontres DISPLACEMENT, tu les affiche et tu continues à afficher les lignes suivantes.
 
demande moi si tu comprends pas ce script

Code :
  1. #! /usr/local/bin/perl                                                                                                                   
  2. $found = 0;
  3. my $n_3 = "";
  4. my $n_2 = "";
  5. my $n_1 = "";
  6. while( <> )
  7. {
  8.     if( /^DISPLACEMENT$/ )
  9.     {
  10.         $found = 1;
  11.         print $n_3;
  12.         print $n_2;
  13.         print $n_1;
  14.     }
  15.     print if $found;
  16.     $n_3 = $n_2;
  17.     $n_2 = $n_1;
  18.     $n_1 = $_;
  19. }


---------------
TriScale innov
n°1347274
lami20j
Posté le 14-04-2006 à 23:39:07  profilanswer
 

Salut,
 

Code :
  1. #! /usr/bin/perl
  2. use warnings;
  3. use strict;
  4. my (@lignes3,@rest);
  5. while (<DATA> ){
  6.   next if 1../DEBUT/i and push @lignes3,$_;
  7.   splice(@lignes3,0,-4);
  8.   push @rest,$_;
  9. }
  10. print @lignes3,@rest;
  11. __END__
  12. llll
  13. kkkkk
  14. ksdjkfjlll
  15. ooo
  16. ppp
  17. o
  18. phdoj
  19. 230487130
  20. DEBUT
  21. etc....jusque fin de fichier

lami20j


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

  [perl]: copie fichier1 vers fichier2 sauf le début

 

Sujets relatifs
Formulaire HTML vers PHP[perl embed] Probleme socket
[perl] ouverture de fichier d'extension particuliere.Accélérer un script perl
Utilisation de la commande echo redirigée vers un fichier(DotNet c++) envoi vers une textbox
[résolu][PERL]variable bizzare[perl]effacer répétitions dans une liste
Pages HTML vers fonction PHP[Perl] question relativement facile.
Plus de sujets relatifs à : [perl]: copie fichier1 vers fichier2 sauf le début


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