sed를 사용하여 문자열을 슬래시가 포함된 문자열로 바꾸는 방법은 무엇입니까?

sed를 사용하여 문자열을 슬래시가 포함된 문자열로 바꾸는 방법은 무엇입니까?

sed를 사용하여 파일의 문자열을 슬래시가 포함된 문자열로 바꾸는 방법을 찾고 있습니다.

connect="192.168.100.61/foo"
srcText="foo.bar=XPLACEHOLDERX"
echo $srcText | sed "s/XPLACEHOLDERX/$connect"

결과 :

sed: -e Expression #1, Character 32: Unknown option for `s'

답변1

명령에서 다른 문자를 구분 기호로 사용하십시오 s.

printf '%s\n' "$srcText" | sed "s|XPLACEHOLDERX|$connect|"

또는 ksh93의 매개변수 확장 연산자를 사용하여 슬래시를 이스케이프 처리합니다(현재, 최신 버전의 busybox ${var//pattern/replacement}도 이를 지원합니다).zshbashmkshyashsh

printf '%s\n' "$srcText" | sed "s/XPLACEHOLDERX/${connect//\//\\/}/"

답변2

쉘이 이를 지원하는 경우:

"${srcText/XPLACEHOLDERX/$connect}"

관련 정보