Discussion: rechercher/remplacer
Afficher un message
Vieux 07/04/2006, 14h24   #2
Jacques L'helgoualc'h
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: rechercher/remplacer

Le 07-04-2006, gamotte chez hotmail.com a écrit:
> Bonjour,


bonjour,

> Je cherche à faire la chose suivante pour chaque ligne d'un fichier:
> - chercher un motif donné
> - remplacer chaque occurrence de ce motif par autre chose, le reste de
> la ligne étant éliminé
> - si le motif n'est pas trouvé, la chaine en sortie est vide
>
> Par exemple, si on a la chaine
>
> blablablaToblablaTiblablaTubla
>
> et le motif "T[aeiou]" qui doit être remplacé par lui-même deux
> fois, la
> sortie devrait être
>
> ToToTiTiTuTu
>
> appliqué à la chaîne "blablablabla", on devrait avoir en sortie une
> chaîne vide.


Avec GNU Sed (v.4),

echo 'blablaToblablaTiblaTubla
TablaTiblabla
BloBloBlo' | sed -re '
/T[aeiou]/!d # supprime une ligne sans motif
s/(T[aeiou])/\n\1/g # préfixe les motifs avec un caractère impossible
s,^[^\n]*,, # supprime le début de ligne
s,(T[aeiou])[^\n]*,[\1\1],g # duplique et encadre les motifs, nettoie derrière
s,\n,,g' # supprime les marquages
[ToTo][TiTi][TuTu]
[TaTa][TiTi]

Sans l'option -r, il faut préfixer les parenthèses par «\» (ainsi que
+, |, ?, ...). Certaines versions de Sed peuvent refuser le \n...

> Merci


de rien,
--
Jacques L'helgoualc'h
  Réponse avec citation
 
Page generated in 0,04586 seconds with 9 queries