sed -e powinno być używane zamiast sed -r, które nie istnieje.
Dylan Daniels,
1
@DylanDaniels Zgodnie z man sedUbuntu -ropcja oznacza „użyj rozszerzonych wyrażeń regularnych”. Zatem podane polecenie działa dobrze, chociaż nie potrzebuje do działania funkcji rozszerzonych wyrażeń regularnych.
g
flagi do globalnego zastępowania, tutaj też nie potrzebujesz tej-r
opcji.Odpowiedzi:
Powinieneś dodać
g
modyfikator, aby sed wykonywał globalne podstawienie zawartości bufora wzorca:Fantastyczną dokumentację na temat seda znajdziesz pod adresem http://www.grymoire.com/Unix/Sed.html . Ta globalna flaga została wyjaśniona tutaj: http://www.grymoire.com/Unix/Sed.html#uh-6
Oficjalna dokumentacja programu
GNU sed
jest dostępna pod adresem http://www.gnu.org/software/sed/manual/źródło
sed -E 's,foo,bar,g'
nie robi rzeczy globalnej. Jeśli to zmienisz,sed -E -e 's,foo,bar,g'
to działa.Na
g
końcu trzeba umieścić „globalny”:źródło
man sed
Ubuntu-r
opcja oznacza „użyj rozszerzonych wyrażeń regularnych”. Zatem podane polecenie działa dobrze, chociaż nie potrzebuje do działania funkcji rozszerzonych wyrażeń regularnych.