我正在寻找一种使用 sed 将文件中的字符串替换为包含斜杠的字符串的方法。
connect="192.168.100.61/foo"
srcText="foo.bar=XPLACEHOLDERX"
echo $srcText | sed "s/XPLACEHOLDERX/$connect"
Run Code Online (Sandbox Code Playgroud)
结果是:
sed: -e Expression #1, Character 32: Unknown option for `s'
Run Code Online (Sandbox Code Playgroud)
man*_*ork 33
在s命令中使用另一个字符作为分隔符:
printf '%s\n' "$srcText" | sed "s|XPLACEHOLDERX|$connect|"
Run Code Online (Sandbox Code Playgroud)
或逃避与ksh93的的斜线${var//pattern/replacement}参数扩展运算符(现在也支持zsh,bash,mksh,yash和最新版本的busybox的sh)。
printf '%s\n' "$srcText" | sed "s/XPLACEHOLDERX/${connect//\//\\/}/"
Run Code Online (Sandbox Code Playgroud)