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

Re: [HS] sed : garder le motif



> > > > 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 :

merci.

> - é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 ;

Je ne connaissais pas cette sélection en mode bloc, je vois mieux
maintenant de quoi il s'agit. Pour info, c'est bien v majuscule.

>   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.

ok, c'est effectivement assez simple ainsi.

> Si le ficher d'origine était :
> 
> ABCqsd
> DEFqsdf
> qsddfqqsd
> XYZ
> FGHqdfq
> tXY
> 
> il devient :
> 
> ABC
> DEF
> qsd
> XYZ
> FGH
> tXY

ok.

> Reste à éliminer les lignes contenant des minuscules:

C'est cette seconde phase que je n'avais pas compris et pour cause, les
trois premières lettres sont toujours en majuscules.

> grep -E "[A-Z][A-Z][A-Z]" fich.txt > fichmodif.txt

ok.

> et on récupère le résultat dans fichmodif.txt.
> 
> ABC
> DEF
> XYZ
> FGH
> 
> C'est bien cela que tu voulais ?

Absolument, merci d'ailleurs.

> Naturellement, à la place de vi, on peut utiliser un autre éditeur de
> textes qui accepte les sélections en colonne.

Ou encore éditer le fichier dans un tableur est utilisé une fonction
substr(), mais je ne voulais pas le faire comme ça, je voulais utiliser
sed.

Merci pour ton explication.

Excellente journée,
Steve


Reply to: