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

  FORUM HardWare.fr
  Programmation
  Perl

  renommer un element dans un fichier

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

renommer un element dans un fichier

n°1721712
donny3
Posté le 22-04-2008 à 13:37:29  profilanswer
 

salut,
 
J'ai un fichier texte
qui contient ce mot

Citation :

DELTA


à plusieurs endroit,
je souhaiterais remplacer DELTA chaque fois que je le trouve par un autre element;
 
est ce possible avec un regex ?
 
Merci

mood
Publicité
Posté le 22-04-2008 à 13:37:29  profilanswer
 

n°1721715
Elmoricq
Modérateur
Posté le 22-04-2008 à 13:40:59  profilanswer
 

perl -pi -e 's/DELTA/autremot/g;' fichier

n°1721876
anapajari
s/travail/glanding on hfr/gs;
Posté le 22-04-2008 à 14:53:33  profilanswer
 

Si c'est pour le faire via une ligne de commande, je recommanderai plutôt un sed ( sauf si ton fichier est vraiment énorme).
 
Si c'est à mettre "au sein" d'un script, choppe la regex d'Elmoricq et place la sur le parcours de ton fichier.


---------------
Software and cathedrals are much the same - first we build them, then we pray.
n°1721890
Elmoricq
Modérateur
Posté le 22-04-2008 à 15:08:49  profilanswer
 

J'aime pas sed, c'est lent et c'est tout pourrÿ, même si pour ce genre de tache faire appel à PERL c'est peut-être un peu de l'overkill :o

n°1721907
donny3
Posté le 22-04-2008 à 15:17:35  profilanswer
 

j'ai fait un system je l'ai mis dedans mon script reste bloqué dessus je comprend pas,car quand je la lance directement dans mon shelle elle tourne
 

Citation :


system ("perl -pi -e 's/DELTA/TEST/g;' > ".$ENV{SCRIPTS}."/".$file);

n°1721914
Elmoricq
Modérateur
Posté le 22-04-2008 à 15:19:08  profilanswer
 

system() ?!
 
system() d'une commande PERL dans un script PERL ?
 
 
Euh, je... je... je... ne sais pas quoi dire, là. [:ummon]

n°1721918
donny3
Posté le 22-04-2008 à 15:20:49  profilanswer
 

je crois avoir trouvé j 'ai rajouter ">" en plus

n°1721921
donny3
Posté le 22-04-2008 à 15:21:44  profilanswer
 

je n'ai pas besoin du system , c'est cela ?*

n°1721985
anapajari
s/travail/glanding on hfr/gs;
Posté le 22-04-2008 à 16:04:58  profilanswer
 

Elmoricq a écrit :

system() ?!
system() d'une commande PERL dans un script PERL ?
Euh, je... je... je... ne sais pas quoi dire, là. [:ummon]


 fallait se servir de sed [:hahaguy]

donny3 a écrit :

je crois avoir trouvé j 'ai rajouter ">" en plus


 [:kains]

donny3 a écrit :

je n'ai pas besoin du system , c'est cela ?*


Fais voir ton script ( ou au moins le morceau qui contient le "traitement" du fichier)

 


Message édité par anapajari le 22-04-2008 à 16:05:19

---------------
Software and cathedrals are much the same - first we build them, then we pray.
n°1722731
donny3
Posté le 23-04-2008 à 12:44:12  profilanswer
 

j'ai trouver cela mais pas encore tester
 

Code :
  1. #!/usr/bin/perl
  2. use strict;
  3. use warnings;
  4. my $filename = 'some_file.txt';
  5. my $find = 'this';
  6. my $replace = 'that';
  7. {
  8.    local @ARGV = ($filename);
  9.    local $^I = '.bac';
  10.    while( <> ){
  11.       if( s/$find/$replace/ig ) {
  12.          print;
  13.       }
  14.       else {
  15.          print;
  16.       }
  17.    }
  18. }
  19. print "Finished";

mood
Publicité
Posté le 23-04-2008 à 12:44:12  profilanswer
 

n°1722835
anapajari
s/travail/glanding on hfr/gs;
Posté le 23-04-2008 à 14:34:55  profilanswer
 

oui donc là tu as trouvé un truc prêt qui est censé faire ce que tu veux ...


---------------
Software and cathedrals are much the same - first we build them, then we pray.
n°1722899
donny3
Posté le 23-04-2008 à 15:19:46  profilanswer
 

je n'ai pas trop compris à quoi servait ceci

Code :
  1. local $^I = '.bac';

n°1722901
donny3
Posté le 23-04-2008 à 15:21:16  profilanswer
 

en faite il crée un .bac à chaque fois
je suis obligé de les supprimé à la fin

n°1723112
gilou
Modérateur
Modzilla
Posté le 23-04-2008 à 18:43:32  profilanswer
 

local $^I = '.bac';
ca a comme effet  
1. de faire que les modifications aient lieu sur le fichier initial, "in place editing"
2. de creer automatiquement un fichier de backup avec l'extension .bac pour tout fichier utilise dans <>.  (perl ne fait pas d'in place editing sans faire un fichier de backup a priori, sauf a passer par un tie du fichier sur un array)
A+,


Message édité par gilou le 21-11-2008 à 21:07:03

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

  renommer un element dans un fichier

 

Sujets relatifs
Extraction d'un fichier texte vers une liste (pascal)Créer/Manipuler base de données à partir d'un fichier .db
[c++] filtre directshow et fichier idltaille d'un fichier avec url
[MediaWiki] Upload de fichier (marche que sur l'hebergement du wiki)[Sound] Lire un fichier non-44100 Hz avec Flash 8 et inférieurs
Enregistrer une image provenant d'un data:URI dans un fichier[BATCH] Comment insérer une tabulation dans un fichier
Temps lecture fichier word extremement long[Résolu] Afficher les 10 dernières lignes d'un fichier
Plus de sujets relatifs à : renommer un element dans un fichier


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