154 votes

Pourquoi sed ne remplace-t-il pas toutes les occurrences ?

Si j'exécute ce code dans bash :

echo dog dog dos | sed -r 's:dog:log:'

cela donne une sortie :

log dog dos

Comment puis-je faire en sorte qu'il remplace toutes les occurrences de chien ?

239voto

Bruno Reis Points 16132

Vous devez ajouter le g afin que sed effectue un mondial substitution du contenu du tampon de motifs :

echo dog dog dos | sed -e 's:dog:log:g'

Pour une documentation fantastique sur sed, consultez http://www.grymoire.com/Unix/Sed.html . Ce site mondial est expliqué ici : http://www.grymoire.com/Unix/Sed.html#uh-6

La documentation officielle pour GNU sed est disponible à l'adresse suivante http://www.gnu.org/software/sed/manual/

30voto

alestanis Points 11214

Vous devez mettre un g à la fin, cela signifie "global" :

echo dog dog dos | sed -r 's:dog:log:g'
                                     ^

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X