[PERL] supprimer commentaire

Résolu/Fermé
wafa_o Messages postés 109 Date d'inscription mercredi 16 juillet 2008 Statut Membre Dernière intervention 4 janvier 2011 - 29 juil. 2008 à 08:54
wafa_o Messages postés 109 Date d'inscription mercredi 16 juillet 2008 Statut Membre Dernière intervention 4 janvier 2011 - 31 juil. 2008 à 10:30
Bonjour,

Est ce que quelqu'un sait comment supprimer les commentaires dans un fichier avec les regexp.
Je voudrais une ligne de commande du genre :
$tab[$_] =~ ....
où $tab est un tableau, j'y met chaque ligne de mon fichier.
Merci d'avance.
A voir également:

14 réponses

wafa_o Messages postés 109 Date d'inscription mercredi 16 juillet 2008 Statut Membre Dernière intervention 4 janvier 2011 2
29 juil. 2008 à 16:25
Je pense avoir trouvé.

open(D ,$file ) or die "ERREUR ! \n"; while (my $line = <D> ) {

if ($line !~ /^#/) {
push @tableau , $line
}
}
close(D) ;
1
wafa_o Messages postés 109 Date d'inscription mercredi 16 juillet 2008 Statut Membre Dernière intervention 4 janvier 2011 2
29 juil. 2008 à 15:31
Une idée?
0
Ta question est non claire à lala wafaa
0
wafa_o Messages postés 109 Date d'inscription mercredi 16 juillet 2008 Statut Membre Dernière intervention 4 janvier 2011 2
29 juil. 2008 à 15:46
j'ai un fichier. Je place chaque ligne de mon fichier dans un tableau. Je souhaite supprimer toutes les lignes commencant par #. Ou placer toutes les lignes de mon fichier autre que des commentaires dans mon tableau.

Est ce que c'est plus claire theMan ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
substr(exemple,0,1), vous obtenez comme résultat "e". Extraire un caractère à partir de la position 0

Pour chaque ligne lu dans ton fichier

Lire le premier caractère avec substr(ligne,0,1)
si ce caractère égal è #
palcer la ligne dans le tableau

Lire ligne suivante.

Mezaine!
0
davlar Messages postés 75 Date d'inscription lundi 26 novembre 2007 Statut Membre Dernière intervention 11 mai 2009 57
29 juil. 2008 à 16:01
ouvre ton fichier et met-le dans un tableau (faire un open et l'affecté à une variable du genre @fichier)

et ensuite fait un foreach et (selon si tu l'as ouvert en rw ou en r) supprime les lignes que tu veux ou bien compose un nouveau fichier avec les lignes de ta condition.

A+

Dave
0
wafa_o Messages postés 109 Date d'inscription mercredi 16 juillet 2008 Statut Membre Dernière intervention 4 janvier 2011 2
29 juil. 2008 à 16:04
C'est ce que j'ai fait davlar. Je vais essayer le foreach ...
0
wafa_o Messages postés 109 Date d'inscription mercredi 16 juillet 2008 Statut Membre Dernière intervention 4 janvier 2011 2
29 juil. 2008 à 16:02
Merci mais ce n'est pas du tout ce que je souhaite avoir en sortie. Enfin je comprends pas trop ce que tu fais.
0
iwa meziane
0
wafa_o Messages postés 109 Date d'inscription mercredi 16 juillet 2008 Statut Membre Dernière intervention 4 janvier 2011 2
29 juil. 2008 à 16:34
hamdoulilah compatriote
0
mnine ntia?
0
davlar Messages postés 75 Date d'inscription lundi 26 novembre 2007 Statut Membre Dernière intervention 11 mai 2009 57
29 juil. 2008 à 16:45
Tu veux faire qqe chose du genre ?

main();

sub rtrim($) # Right trim function to remove trailing whitespace
{
my $string = shift;
$string =~ s/\#.*?$//g;
return $string;
}



sub main()
{
open (FILE,"fichier_avec_commentaire.txt");
@z_fichier = <FILE>;
foreach $ligne (@z_fichier) # on boucle sur chaque ligne du tableau jusqu'au EOF
{
$resultat = rtrim($ligne);
print "pas de commentaire: $resultat\n";
}
close (FILE);
}
0
wafa_o Messages postés 109 Date d'inscription mercredi 16 juillet 2008 Statut Membre Dernière intervention 4 janvier 2011 2
29 juil. 2008 à 16:50
Merci Davlar, j'ai trouvé ce que je voulais avoir en sortie.
J'ai ecris le bout de code au dessus.
En tout cas merci pour ton aide.
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
29 juil. 2008 à 18:17
Salut,

tu parles de celui ci

tu peux faire comme ça ;-)
lami20j@debian:~/trash$ cat fichier.txt
# ligne 1
ligne 2
# ligne 3
#ligne 4
ligne 5
lami20j@debian:~/trash$ cat ccm.pl
#!/usr/bin/perl
#
use warnings;use strict;

my $file="fichier.txt";

open D ,$file or die "E/S : $! \n";

my @tableau = grep { ! /^#/ } <D>;
print for @tableau;

close D ;
__END__
lami20j@debian:~/trash$ perl ccm.pl
ligne 2
ligne 5
lami20j@debian:~/trash$
Il y a plusieurs façons de le faire en Perl, à toi de choisir celle qui te conviens le plus ;-)


0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
29 juil. 2008 à 18:21
Re,

voici une version plus compacte ;-) (pour Linux)
lami20j@debian:~/trash$ cat ccm.pl
#!/usr/bin/perl
#
use warnings;use strict;
my @tableau = grep { ! /^#/ } `cat fichier.txt`;
print for @tableau;
__END__

0
wafa_o Messages postés 109 Date d'inscription mercredi 16 juillet 2008 Statut Membre Dernière intervention 4 janvier 2011 2
31 juil. 2008 à 10:30
Thanks !
0