如何使用 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

如果你的 shell 支持它:

"${srcText/XPLACEHOLDERX/$connect}"

相关内容