\가 포함된 변수를 sed로 교체하세요.

\가 포함된 변수를 sed로 교체하세요.

문자열을 파일의 문자열로 바꾸려고 합니다 $old .$new

old=ESX_10.1.1.1\@11.11.11.11
new=host_15_11_0_111.static

나는 sed 명령을 사용하고 있습니다 :

sed i "s/${old}/${new}/g" /filename

그러나 단어를 대체하지 않으며 오류도 표시하지 않습니다. 나는 교체와 같은 다양한 방법을 시도했습니다.

sed i "s,${old},${new},g" /filename

그리고

sed i "s=${old}=${new}=g" /filename

하지만 작동하지 않습니다. 이 문제를 해결하도록 도와주세요

답변1

\다른 사람과 함께 탈출 해야 합니다 \. 다음과 같이 bash 쉘 변수에서 이 작업을 수행할 수 있습니다.

sed -i -e "s/${old//\\/\\\\}/${new//\\/\\\\}/g" filename

바라보다man bash 매개변수 확장을 위한 ${parameter/pattern/string}. 반복 실행 //대신 with 버전을 사용합니다 . /그리고 우리는 스스로 탈출해야 하기 \때문에 그것이 여러번 반복될 것이다.

관련 정보