使用 sed 将字符串替换为变量

Replace a string with a variable using sed

我的文件中有这个字符串

$vnet_address

而且我在 bash 运行 时间里有这个变量,我想将我的字符串替换为:

$vnet_address=10.1.0.0/16

我在 运行 这个命令时出错:

sed -i "/$vnet_address/ s//$vnet_address/"

我相信这是因为我的变量中的斜杠字符“/”。

怎么办?

您可以使用

sed -i "s,\$vnet_address,${vnet_address}," file

注:

  • 正则表达式分隔符替换为,
  • $ 已使用文字 \ 字符正确转义

online demo:

#!/bin/bash
s='$vnet_address'
vnet_address=10.1.0.0/16
sed "s,\$vnet_address,${vnet_address}," <<< "$s"
# => 10.1.0.0/16