sed에서 불균형 괄호나 슬래시를 피하는 방법은 무엇입니까?

sed에서 불균형 괄호나 슬래시를 피하는 방법은 무엇입니까?

사용하려고 하는데 sed패턴에 []대괄호와 슬래시( /)가 포함되어 있습니다.

인용해 보았으나 소용이 없습니다.

어떻게 탈출하나요?


예:

$ sed -i'.bak' "s/^includes[] =/;includes[] =/g" *.make
sed: 1: "s/^includes[] =/;includ ...": unterminated substitute in regular expression
$ sed -i'.bak' 's/^includes[] = includes/;includes/g' *.make
sed: 1: "s@^includes[] = i ...": unbalanced brackets ([])
$ sed -i'.bak' 's/^includes[] = foo/includes//;includes[] = foo/includes//g' *.make
sed: 1: "s/^includes[] = foo/inc ...": bad flag in substitute command: '/'

답변1

슬래시를 이스케이프하려면 슬래시를 제외한 모든 문자를 사용하여 정규식을 구분할 수 있습니다.

예를 들어( foo1/-> foo2/):

sed "s@foo1/@foo2/@"
sed "s|foo1/|foo2/|"

괄호를 이스케이프 처리하려면(슬래시에도 적용됨) 구분 문자 앞에 백슬래시 문자를 배치하여 해당 문자가 문자 그대로 처리되도록 해야 합니다.

예를 들어( foo[] =-> ;foo[] =):

sed "s/foo\[\] =/;foo\[\] =/"

(man sedSed 정규 표현식).

관련 정보