2013-05-19 15 views
7

Uruchomę to polecenie zmiany w systemie Ubuntu 12.04.Błąd sed "Nieprawidłowy koniec zakresu"

$ sed -e "s/([a-zA-Z0-9.-/\\ :]+)/\1/g" 

Jednak powstaje następujący błąd.

sed: -e wyrażenie # 1, char 27: Nieprawidłowy końcowy zakres

pamiętam to samo wyrażenie działa na MacOSX.
Czy możesz opisać, dlaczego polecenie się nie udaje?

Odpowiedz

9

Możesz go rozwiązać na dwa sposoby. Jednym z nich jest użycie -r przełącznik aby uniknąć ucieczki znaków specjalnych i przejść - w przedziale do pierwszej lub ostatniej pozycji i uniknąć jego szczególne znaczenie, byłoby jak:

sed -re "s/([a-zA-Z0-9./\\ :-]+)/\1/g" 

W przeciwnym razie trzeba będzie uciec albo ( , ) i +, takie jak:

sed -e "s/\([a-zA-Z0-9./\\ :-]\+\)/\1/g" 
+0

Thx! Działa w linii poleceń. Jednak [tutaj] (http://stackoverflow.com/questions/16637799/sed-error-invalid-reference-1-on-s-commands-rhs) jest pytaniem uzupełniającym. – JJD

Powiązane problemy