Salut,
je n'ai pas testé
En ligne de commande (modification directe avec sauvegarde de fichier original - data.txt original deviendra data.txt.orig)
perl -pi.orig -e 's/^(.*\|.*\|.*\|)(\|.*)$/$1C$2/' data.txt
ou
perl -pi.orig -e 's/\|\|/|C|/' data.txt
ou
perl -pi.orig -e 's/(?<=\|)(?=\|)/C/' data.txt
Sous forme de script (la modification sera écrite dans un autre fichier)
#!/usr/bin/perl
open LIRE,"data.txt"
or die "E/S : $!\n";
open ECRIRE, ">> date_res.txt"
or die "E/S : $!\n";
while (<LIRE>){
s/^(.*\|.*\|.*\|)(\|.*)$/$1C$2/; # je vérifie les 3 premiers |
print ECRIRE;
}
close LIRE; close ECRIRE;
__END__ou
#!/usr/bin/perl
open LIRE,"data.txt"
or die "E/S : $!\n";
open ECRIRE, ">> date_res.txt"
or die "E/S : $!\n";
while (<LIRE>){
s/\|\|/|C|/;# j'ai remarqué un seul regroupement
# s'il y a plusieurs on ne risque rien
# seulement le 1er rencontré sera modifié
print ECRIRE;
}
close LIRE; close ECRIRE;
__END__ou
#!/usr/bin/perl
open LIRE,"data.txt"
or die "E/S : $!\n";
open ECRIRE, ">> date_res.txt"
or die "E/S : $!\n";
while (<LIRE>){
s/(?<=\|)(?=\|)/C/; # pareil comme la version 2 sauf que j'utilise les tests avant/arrière
print ECRIRE;
}
close LIRE; close ECRIRE;
__END__--
lami20j