![sed를 사용하여 문자열을 슬래시가 포함된 문자열로 바꾸는 방법은 무엇입니까?](https://linux55.com/image/23086/sed%EB%A5%BC%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20%EB%AC%B8%EC%9E%90%EC%97%B4%EC%9D%84%20%EC%8A%AC%EB%9E%98%EC%8B%9C%EA%B0%80%20%ED%8F%AC%ED%95%A8%EB%90%9C%20%EB%AC%B8%EC%9E%90%EC%97%B4%EB%A1%9C%20%EB%B0%94%EA%BE%B8%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
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}
도 이를 지원합니다).zsh
bash
mksh
yash
sh
printf '%s\n' "$srcText" | sed "s/XPLACEHOLDERX/${connect//\//\\/}/"
답변2
쉘이 이를 지원하는 경우:
"${srcText/XPLACEHOLDERX/$connect}"