Re: [HS] sed : garder le motif
On Wed, Jan 28, 2009 at 08:55:48AM +0100, steve wrote:
>
> > > sed -e 's/^[A-Z][A-Z][A-Z]//' input_file
> > >
> > > et ça me sort (fort logiquement d'ailleurs) les caractères de rang 4 et
> > > plus, donc exactement le contraire de ce que je veux.
> > >
> > > Comment lui dire de ne m'afficher *que* le motif cherché ?
> > >
> > S'il s'agit bien d'un seul fichier, il y a une méthode simple en deux
> > temps :
> > - editer le fichier disons fich.txt avec vi et supprimer tout ce qui
> > dépasse le troisième caractère (Ctrl-V).
> > - grep -E "[A-Z][A-Z][A-Z]" fich.txt > fichmodif.txt
>
> Je ne comprends la seconde étape (ni la première d'ailleurs, il faut le
> faire manuellement ?) si la première fait le travail.
>
Je détaille :
- éditer le fichier avec vi et sélectionner en mode colonne tout ce qui
dépasse le troisième caractère en utilisant la commande Ctrl-V ;
il faudra éventuellement allonger la dernière ligne de manière à
pouvoir tout sélectionner d'un seul coup. Supprimer avec la commande d
puis sauvegarder.
Si le ficher d'origine était :
ABCqsd
DEFqsdf
qsddfqqsd
XYZ
FGHqdfq
tXY
il devient :
ABC
DEF
qsd
XYZ
FGH
tXY
Reste à éliminer les lignes contenant des minuscules:
grep -E "[A-Z][A-Z][A-Z]" fich.txt > fichmodif.txt
et on récupère le résultat dans fichmodif.txt.
ABC
DEF
XYZ
FGH
C'est bien cela que tu voulais ?
Naturellement, à la place de vi, on peut utiliser un autre éditeur de
textes qui accepte les sélections en colonne.
A+
--
Pierre Meurisse
Reply to: