我正在寻找一种方法,使用 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
如果你的 shell 支持它:
"${srcText/XPLACEHOLDERX/$connect}"