2013-05-19 2 views
7

우분투 12.04에서이 대체 명령을 실행합니다.sed error "범위가 잘못되었습니다."

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

그러나 다음과 같은 오류가 발생합니다.

나오지 : -e 표현 # 1, 문자 27 ​​: 유효하지 않은 범위의 끝

나는 같은 표현에서라도 작동 기억할 수 있습니다.
명령이 실패한 이유를 설명 할 수 있습니까?

답변

9

두 가지 방법으로 해결할 수 있습니다. 당신도 (을 탈출해야합니다 그렇지 않으면

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

:처럼 중 하나는 특수 문자를 이스케이프 피하기 위해 -r 스위치를 사용하여 첫 번째 또는 마지막 위치와 특별한 의미를 방지하기 위해 범위에서 -을 이동하는 것입니다, 그것은 것 , )+ 등 :

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

Thx! 그것은 커맨드 라인에서 작동합니다. 비록, [여기] (http://stackoverflow.com/questions/16637799/sed-error-invalid-reference-1-on-s-commands-rhs)는 후속 질문입니다. – JJD

관련 문제