[PERL]Remplacer chaine de caractères d'un txt
Résolu
TMart
Messages postés
63
Date d'inscription
Statut
Membre
Dernière intervention
-
TMart Messages postés 63 Date d'inscription Statut Membre Dernière intervention -
TMart Messages postés 63 Date d'inscription Statut Membre Dernière intervention -
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.
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.
A voir également:
- [PERL]Remplacer chaine de caractères d'un txt
- Remplacant de coco - Accueil - Réseaux sociaux
- Remplacer disque dur par ssd - Guide
- Caractères ascii - Guide
- Caractères spéciaux - Guide
- Chaine tnt gratuite sur mobile - Guide
2 réponses
Salut,
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.
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.