|
|
|
|
Bonjour,
Je me remet au Perl, et j'ai quelques sérieuses difficultés...
En effet, mon script trouve bien le fichier, trouve mon expression régulière, mais visiblement, reste bloqué sur le chomp();
#!/usr/bin/perl -w
#######################################################################
# Programme perl de parcours de fichiers dans un répertoire. #
# Recherche d'une expression régulière dans ces fichiers. #
# Suppressions de nombreuses lignes, une fois l'expReg trouvée.
#######################################################################
# help : http://www.unix.org.ua/orelly/perl/
#$chemin = "/home/test/";
#opendir REP, $chemin
#or die "impossible d'ouvrir le repertoire : $!";
#@fichiers = readdir REP;
#closedir(REP);
#foreach $fichier (@fichiers)
#{
#$full_path=$chemin.$fichier;
#print "$full_path\n";
# verifier les droits d'ecriture sur le fichier...
##################################################
open(FILE, '+<C:/Documents and Settings/toto/Mes documents/mon_test.txt')
or die ("probleme a l'ouverture du fichier : $!" );
#print "$fichier\n";
my @ligne = <FILE>;
my $chaine ="mon image A\.jpg";
my $i=0;
foreach $ligne(@ligne)
{
if ($ligne=~/$chaine/)
{
$i++;
while ($i<10)
{chomp ($ligne);}
}
else {printf("mauvaise expression reguliere\n");}
#next FILE;
}
close(FILE);
#}
exit(0)
Le résultat :
mauvaise expression reguliere
mauvaise expression reguliere
mauvaise expression reguliere
mauvaise expression reguliere
Terminating on signal SIGINT(2)
(dernière ligne obtenue après ctrl+c car bloqué : la chaine trouvée se trouve en effet à la 5° ligne de mon fichier texte...)
Précision : comme dit en commentaire, le but est de supprimer plusieurs lignes une fois la regExp trouvée.
Une petite aide ne serait pas de refus :o)
Merci,
A+
Configuration: Windows XP Firefox 1.5.0.9
Bon, j'avance petit à petit, cependant, je n'arrive pas :
|
Salut,
while (<>){
# à remplacer motif avec ta regex
print unless /motif/; # je saute la ligne correspondant au motif
}et tu exécutes le script avec la commande
perl script.pl mon_test.txt > resultat.txt-- lami20j |
Bonjour,
|
Salut,
while(<>){
# on supprime les paragraphe
# compris entre motif_debut et motif_fin
print unless /motif_debut/.../motif_fin/;
}je pense que ça sera mieux si tu me montre un de tes fichiers
et de dire ce que tu veux supprimmer une des erreurs qui font ceux qui demande c'est qu'ils ne donnent pas les détails par exemple dans le cas des regex c'est imperatif de connaître la structure de fichiers en entrée et de savoir ce qu'on veut obtenir en sortie à toi lami20j |