Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

suppression de ligne "parasite"

8 views
Skip to first unread message

lauxeti

unread,
Jan 10, 2012, 5:34:20 AM1/10/12
to
Bonjour à tous et meilleurs voeux,

Je souhaiterais avoir une aide pour la suppressionn de ligne

Voila le problème :

J'ai un fichier .txt , envoyé chaque semaine, qui contient des lignes
comme ceci:


C>
O>====================================================================Essai
======================================================================ttest1
test2
-------------------------------------------------------------------------------
1300 101:1635
C>
O>====================================================================Essai1
======================================================================ttest1
test2
-------------------------------------------------------------------------------
1600 101:1634

Je souhaiterais ne plus avoir dans le fichier de sortie

- les lignes commençant par O>===
- les lignes commençant par ===
- les lignes commençant par -------


Quelqu'un peut il m'aider ?
Merci d'avance
Le Lauxeti

azrazer

unread,
Jan 11, 2012, 4:22:09 AM1/11/12
to
Bonjour,
voulez-vous utiliser perl pour cela ? (s'il n'y a que cette t�che �
faire, ce n'est peut-�tre pas le meilleur outil)
Bref, voici deux solutions :
avec sed : sed -i '/^O>===\|^===\|^------/d' VOTREFICHIER.txt

en perl :
---8<-----------8<---------8<-------
use strict;
use warnings;
use File::Slurp;

my $filename = shift;

my $text = read_file($filename); # Slurp "meurt" s'il ne trouve pas le
fichier

$text =~ s/^O>===.*?$|^===.*?$|^------.*?$//mg; # cf. doc du modifier m

write_file($filename."out",\$text); # ecriture du fichier de sortie (on
#peut egalement ecraser le fichier original, bien sur


---8<-----------8<---------8<-------

(puis appeler le script sur le fichier)

Cordialement,
HTH,

azra.



Le 10/01/2012 11:34, lauxeti a �crit :
> Bonjour � tous et meilleurs voeux,
>
> Je souhaiterais avoir une aide pour la suppressionn de ligne
>
> Voila le probl�me :
>
> J'ai un fichier .txt , envoy� chaque semaine, qui contient des lignes
> comme ceci:
>
>
> C>
> O>====================================================================Essai
> ======================================================================ttest1
> test2
> -------------------------------------------------------------------------------
> 1300 101:1635
> C>
> O>====================================================================Essai1
> ======================================================================ttest1
> test2
> -------------------------------------------------------------------------------
> 1600 101:1634
>
>
>
> Je souhaiterais ne plus avoir dans le fichier de sortie
>
> - les lignes commen�ant par O>===
> - les lignes commen�ant par ===
> - les lignes commen�ant par -------

lauxeti

unread,
Jan 11, 2012, 4:30:38 AM1/11/12
to
> > ======================================================================ttest­1
> > test2
> > ---------------------------------------------------------------------------­----
> > 1300        101:1635
> > C>
> > O>====================================================================Essai­1
> > ======================================================================ttest­1
> > test2
> > ---------------------------------------------------------------------------­----
> > 1600        101:1634
>
> > Je souhaiterais ne plus avoir dans le fichier de sortie
>
> > - les lignes commen ant par O>===
> > - les lignes commen ant par ===
> > - les lignes commen ant par -------
>
> > Quelqu'un peut il m'aider ?
> > Merci d'avance
> > Le Lauxeti- Masquer le texte des messages précédents -
>
> - Afficher le texte des messages précédents -

Bonjour,
merci pour la réponse,
non , je pense me servir de perl pour traiter les données qui sont
dans ce fichier txt , dans l'exemple donné , j'ai precisé que les
lignes qui me posaient problèmes , je teste vos solutions
merci d'avance
Cordialement
Le lauxeti

Marc Espie

unread,
Jan 11, 2012, 8:48:02 AM1/11/12
to
In article <jejkbv$hdu$1...@speranza.aioe.org>,
azrazer <dsf...@poupidoup.com> wrote:
>Bonjour,
>voulez-vous utiliser perl pour cela ? (s'il n'y a que cette tâche à
>faire, ce n'est peut-être pas le meilleur outil)
>Bref, voici deux solutions :
>avec sed : sed -i '/^O>===\|^===\|^------/d' VOTREFICHIER.txt
>
>en perl :
>---8<-----------8<---------8<-------
>use strict;
>use warnings;
>use File::Slurp;
>
>my $filename = shift;
>
>my $text = read_file($filename); # Slurp "meurt" s'il ne trouve pas le
>fichier
>
>$text =~ s/^O>===.*?$|^===.*?$|^------.*?$//mg; # cf. doc du modifier m
>
>write_file($filename."out",\$text); # ecriture du fichier de sortie (on
> #peut egalement ecraser le fichier original, bien sur
>
>
Mais lol quoi. Apprendre a utiliser perl.

perl -ni.bak -e 'print unless m/^(0\>)?\=\=\=/ or m/^\-{5}/' fichier.txt

(sinon, sed -i n'est pas standard, ca ne marchera qu'avec gnu-sed).

azrazer

unread,
Jan 11, 2012, 9:21:54 AM1/11/12
to
Le 11/01/2012 14:48, Marc Espie a écrit :
> Mais lol quoi. Apprendre a utiliser perl.

Si on veut faire de la ligne de commande : il y a des outils plus légers
que perl pour faire ce genre de remplacements
(sed, awk, grep, etc...)

le seul avantage de perl, ici (à mon avis) est de l'utiliser si on veut
vraiment faire un script plus complexe que simplement supprimer des lignes.

> perl -ni.bak -e 'print unless m/^(0\>)?\=\=\=/ or m/^\-{5}/' fichier.txt
"mais lol quoi", pourquoi echappez-vous les signes "=" ... et "-" ??
et si la repetition ----- vous fait bondir, pourquoi pas celle \=\=\= ?

=> il est plus simple pour expliquer aux gens qui ne sont pas a l'aise
avec les regexp des expressions simples que des expressions
"factorisées", mais bon cela semble vous échapper...

> (sinon, sed -i n'est pas standard, ca ne marchera qu'avec gnu-sed).
oui désolé, utiliser
sed -e '/^O>===\|^===\|^------/d' VOTREFICHIER.txt > VOTREFICHIEROUT.txt

Il y a moults façons de faire, pas de quoi "loler" outre mesure...

azra.


Marc Espie

unread,
Jan 11, 2012, 10:49:32 AM1/11/12
to
In article <jek5u0$ppv$1...@speranza.aioe.org>,
azrazer <dsf...@poupidoup.com> wrote:
>Le 11/01/2012 14:48, Marc Espie a écrit :
>> Mais lol quoi. Apprendre a utiliser perl.
>
>Si on veut faire de la ligne de commande : il y a des outils plus légers
>que perl pour faire ce genre de remplacements
>(sed, awk, grep, etc...)


On est quand meme dans fr.comp.lang.perl

>le seul avantage de perl, ici (à mon avis) est de l'utiliser si on veut
>vraiment faire un script plus complexe que simplement supprimer des lignes.


Le 2e avantage de perl ici, a mon avis, est la syntaxe particulierement
agreable et reguliere des expressions regulieres, chose que ni awk, ni sed,
ni grep ne partagent.

>> perl -ni.bak -e 'print unless m/^(0\>)?\=\=\=/ or m/^\-{5}/' fichier.txt
>"mais lol quoi", pourquoi echappez-vous les signes "=" ... et "-" ??
>et si la repetition ----- vous fait bondir, pourquoi pas celle \=\=\= ?

Parce que ca fait partie des bonnes pratiques et de la regularite de perl:
on peut mettre des \ devant tous les caracteres susceptibles d'etre speciaux,
a comparer avec les regles un peu biscornues, de par exemple, grep et des
parentheses.


>=> il est plus simple pour expliquer aux gens qui ne sont pas a l'aise
>avec les regexp des expressions simples que des expressions
>"factorisées", mais bon cela semble vous échapper...

Boarf, c'etait un exemple. On peut faire comme ca, ca titille pour apprendre
des trucs en plus a mon avis.

>> (sinon, sed -i n'est pas standard, ca ne marchera qu'avec gnu-sed).
>oui désolé, utiliser
>sed -e '/^O>===\|^===\|^------/d' VOTREFICHIER.txt > VOTREFICHIEROUT.txt
>
>Il y a moults façons de faire, pas de quoi "loler" outre mesure...

C'etait juste la longueur comparee du script perl avec le sed, qui denote
clairement plus d'habitude de sed, alors qu'on peut faire aussi long avec perl.

Apres si tu te vexes... desole ;-)

azrazer

unread,
Jan 11, 2012, 11:43:47 AM1/11/12
to
Le 11/01/2012 16:49, Marc Espie a écrit :
> In article<jek5u0$ppv$1...@speranza.aioe.org>,
> azrazer<dsf...@poupidoup.com> wrote:
>> Le 11/01/2012 14:48, Marc Espie a écrit :
>>> Mais lol quoi. Apprendre a utiliser perl.
[...]
> Le 2e avantage de perl ici, a mon avis, est la syntaxe particulierement
> agreable et reguliere des expressions regulieres, chose que ni awk, ni sed,
> ni grep ne partagent.
+1 :)
[...]
> C'etait juste la longueur comparee du script perl avec le sed, qui denote
> clairement plus d'habitude de sed, alors qu'on peut faire aussi long avec perl.
(bof, c'est juste que pour des traitements comme celui-là je trouve que
perl est un peu une massue
pour écraser un asticot, mais bon... la simplicité (et du coup la clarté
qui en resulte) des regex
est un bon argument pour l'utiliser :), je plussoie !)
> Apres si tu te vexes... desole ;-)
Désolé, la premiere ligne faisait un peu condescendante... mais bon...
sans rancune.

Bref problème résolu, c'est l'essentiel.

azra.

Pioche Encore

unread,
Jan 19, 2012, 5:30:56 AM1/19/12
to
Le 11/01/2012 16:49, Marc Espie a écrit :

>
> Apres si tu te vexes... desole ;-)

TMTOWTDI
0 new messages