sed -e следует использовать вместо sed -r, которого не существует.
Дилан Дэниэлс
1
@DylanDaniels Согласно man sedUbuntu, -rопция означает «использовать расширенные регулярные выражения». Таким образом, данная команда работает нормально, хотя для работы ей не нужны функции расширенных регулярных выражений.
g
флаг для глобальной подстановки, здесь вам тоже не нужна-r
опция.Ответы:
Вы должны добавить
g
модификатор, чтобы sed выполнял глобальную замену содержимого буфера шаблонов:Для получения фантастической документации по 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/источник
sed -E 's,foo,bar,g'
не имеет глобального значения. Если поменять наsed -E -e 's,foo,bar,g'
то работает.Вы должны поставить
g
в конце, это означает «глобальный»:источник
man sed
Ubuntu,-r
опция означает «использовать расширенные регулярные выражения». Таким образом, данная команда работает нормально, хотя для работы ей не нужны функции расширенных регулярных выражений.