web-dev-qa-db-fra.com

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

Si je lance ce code en bash:

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

il donne la sortie:

log dog dos

Comment puis-je le faire remplacer toutes les occurrences de chien?

101
niagr

Vous devez ajouter le modificateur g de sorte que sed effectue une substitution globale du contenu du tampon de modèle:

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

Pour une documentation fantastique sur sed, consultez http://www.grymoire.com/Unix/Sed.html . Cet indicateur global est expliqué ici: http://www.grymoire.com/Unix/Sed.html#uh-6 =

La documentation officielle de GNU sed est disponible sur http://www.gnu.org/software/sed/manual/

163
Bruno Reis

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

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