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
|