문자열을 파일의 문자열로 바꾸려고 합니다 $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 버전을 사용합니다 . /
그리고 우리는 스스로 탈출해야 하기 \
때문에 그것이 여러번 반복될 것이다.