当值包含 / 时,如何在 sed 的上下文地址中使用变量?

当值包含 / 时,如何在 sed 的上下文地址中使用变量?

我正在尝试更改仅与部分行匹配的文件中的整行。例如,下面的命令可以正常工作,因为“$Netconf_DHCPStart”/中没有:

sed -e '/DHCP_START=/c\DHCP_START='"$Netconf_DHCPStart"

但是,下面的命令不起作用

sed '/static ip_address='"${Current_StaticIP}"'/c\static ip_address='"$Netconf_range"'.110' /etc/dhcpcd.conf

给出错误:

sed:-e 表达式 #1,字符 32:未知命令:'2'

我知道这是因为“$Current_StaticIP”/中包含一个,但是,我不确定如何格式化它以便它可以工作。我需要\先转义变量内的内容吗?

答案1

您可以使用替代\c...c形式,其中c是预计不会出现在变量中的任何字符:

sed '\%static ip_address='"${Current_StaticIP}"'%c\static ip_address='"$Netconf_range"'.110'

c\除非您的第二个变量包含换行符,否则 sed 命令的部分不是问题。)

相关内容