Posez votre question Signaler

[PERL]Remplacer chaine de caractères d'un txt [Résolu]

TMart 48Messages postés 2 juillet 2007Date d'inscription 25 mars 2011Dernière intervention - Dernière réponse le 26 janv. 2009 à 09:20
Bonjour tout le monde,
J'essaye de faire un petit scrip en PERL, qui après avoir mis en arguments en paramètre :
- Ouvre un fichier
- Lit le contenu
- Recherche la ligne commençant par "Logfile"
- Puis la modifie par la valeur de l'argument qui nous avons mis à paramètre.
Voici alors mon petit script :
use strict;use warnings;
open F_ECRIRE,'+<C:\Documents and Settings\TMart\Bureau\monfichier.txt' or die "E/S : $!\n";
while(<F_ECRIRE>)
{
(@ARGV >= 1) or die "Arguments insuffisants";
my $toto=$ARGV[0];
my $tata;
$tata=/^LogFile=/.../^\s*$/;
my $x;
$x =~ s/$tata/$toto/;
print F_ECRIRE if $x;
}
close F_ECRIRE;

Et quand je le lance j'ai des erreurs du style : "Use of uninitialized value in substitution (s///) ... "
Débutant en PERL, il se peut qu'il y est des énormités dans mon code, donc je m'en excuse d'avance si c'est le cas :).
Merci d'avance,
TMart.
Lire la suite 

[PERL]Remplacer chaine de caractères d'un txt »

2 réponses
Réponse
+0
moins plus
Salut,
lami20j@debian:~/trash$ cat monfichier.txt
Logfile=20000
blabla
Logfile=20000
blabla
lami20j@debian:~/trash$ cat ccm1_modifiefichiersurplace.pl
#!/usr/bin/perl
use strict;use warnings;

open F,"+< monfichier.txt" or die "E/S : $!\n";

my @tableau = <F>;
map {s/^(Logfile=).*$/${1}$ARGV[0]/} @tableau;
seek(F,0,0);
print F @tableau;
close F;
__END__
lami20j@debian:~/trash$ perl ccm1_modifiefichiersurplace.pl 10
lami20j@debian:~/trash$ cat monfichier.txt
Logfile=10
blabla
Logfile=10
blabla
labla

Cette méthode n'est conseillé que sur des petits fichiers (Un fichier des 10 000 lignes n'est pas grand, je parle d'un fichier qui fait quelques centaines de Mo)

Si tu veux faire sur des grands fichiers vaut mieux d'utiliser d'autres méthodes.
Ajouter un commentaire
Réponse
+0
moins plus
Merci beaucoup lami2Oj, ça marche nickel !
Ajouter un commentaire
Ce document intitulé « [PERL]Remplacer chaine de caractères d'un txt » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?