sed -e deve ser usado em vez de sed -r, que não existe.
Dylan Daniels
1
@DylanDaniels De acordo com man sedno Ubuntu, a -ropção significa "usar expressões regulares estendidas". Portanto, o comando fornecido funciona bem, embora não precise dos recursos de expressões regulares estendidas para funcionar.
g
sinalizador para substituição global, você também não precisa da-r
opção aqui.Respostas:
Você deve adicionar o
g
modificador para que o sed execute uma substituição global do conteúdo do buffer de padrão:Para obter uma documentação fantástica sobre o sed, visite http://www.grymoire.com/Unix/Sed.html . Este sinalizador global é explicado aqui: http://www.grymoire.com/Unix/Sed.html#uh-6
A documentação oficial do
GNU sed
está disponível em http://www.gnu.org/software/sed/manual/fonte
sed -E 's,foo,bar,g'
não faz a coisa global. Se você mudar parased -E -e 's,foo,bar,g'
ele funciona.Você tem que colocar um
g
no final, ele significa "global":fonte
man sed
no Ubuntu, a-r
opção significa "usar expressões regulares estendidas". Portanto, o comando fornecido funciona bem, embora não precise dos recursos de expressões regulares estendidas para funcionar.