使用sed将2个变量替换为一个变量位置以及正斜杠

时间:2013-05-27 13:05:10

标签: regex shell unix sed

我试图用2个变量替换2个变量但是它给出了sed表达式-e error

 sed 's/'$presentnetwork'/'$netmask\/$subnet'/g' -i /etc/snmp/snmpd.conf

如果把/并用sed代替一个变量,即使我试图只放一个变量它也不起作用

 sed 's/'$presentnetwork'/'$netmask\/'/g' -i /etc/snmp/snmpd.conf

是否可以在同一个sed命令中使用转义序列和变量?

2 个答案:

答案 0 :(得分:2)

您需要用双引号"包装它:

sed "s/$presentnetwork/$netmask\//g" -i /etc/snmp/snmpd.conf
#   ^                              ^

实施例

$ cat a.html 
hello
$ a=hello
$ b=good
$ c=bye
$ sed "s/$a/$b\/$c/g" -i a.html 
$ cat a.html 
good/bye

答案 1 :(得分:1)

sed不仅限于/作为分隔符,您还可以使用其他一些字符来简化转义(如果您知道该字符不能成为变量的一部分):

 sed "s_$presentnetwork_$netmask/_g" -i /etc/snmp/snmpd.conf