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


13

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'

답변:


31

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

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

또는 ksh93의의와 슬래시 탈출 ${var//pattern/replacement}매개 변수 확장 연산자 (이제 지원 zsh, bash, mksh, yash비지 박스의 최근 버전 sh).

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

두 번째 방법은 +1입니다. 첫 번째는 freebsd에서 작동하지 않습니다.
ibrahim

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.