Почему sed не заменяет все вхождения? Если я запустил этот код в bash: echo dog dog dos | sed -r 's:dog:log:' он выводит результат: log dog dos Как я могу заставить его заменить все вхождения собаки? Ответ 1 Вы должны добавить модификатор g, чтобы sed выполнял глобальную подстановку содержимого буфера шаблонов: echo dog dog dos | sed -e 's:dog:log:g' Для фантастической документации по sed проверьте http://www.grymoire.com/Unix/Sed.html. Этот глобальный флаг объясняется здесь: http://www.grymoire.com/Unix/Sed.html#uh-6 Официальную документацию для GNU sed можно найти в http://www.gnu.org/software/sed/manual/ Ответ 2 Вы должны положить g в конце, это означает "глобальный": echo dog dog dos | sed -r 's:dog:log:g' ^
Ответ 1 Вы должны добавить модификатор g, чтобы sed выполнял глобальную подстановку содержимого буфера шаблонов: echo dog dog dos | sed -e 's:dog:log:g' Для фантастической документации по sed проверьте http://www.grymoire.com/Unix/Sed.html. Этот глобальный флаг объясняется здесь: http://www.grymoire.com/Unix/Sed.html#uh-6 Официальную документацию для GNU sed можно найти в http://www.gnu.org/software/sed/manual/
Ответ 2 Вы должны положить g в конце, это означает "глобальный": echo dog dog dos | sed -r 's:dog:log:g' ^