사용하려고 하는데 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 sed
Sed 정규 표현식).