[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: