我正在尝试用一个文件中的引号替换另一个字符串中的字符串,比如$ FILE。我试图使用sed。
我想将m = uniform(0, 0, 1)
替换为m.LoadFile("run2_initial_$NF.ovf")
我正在使用它:
sed -i 's#m = uniform(0, 0, 1)#m.LoadFile("run2_initial_$NF.ovf")#g' $FILE
我得到的是m = uniform(0, 0, 1)
取代m.LoadFile(run2_initial_$NF.ovf)
也就是说,sed只是忽略了替换字符串中的引号。
我做了些蠢事吗?
请建议。
编辑:当我现在尝试时,引号现在正常工作。虽然$ NF没有被数字取代:(
我在新文件中得到的是:
m.LoadFile(" run2_initial_ $ NF.ovf&#34)
而我想:m.LoadFile(" run2_initial_3.ovf")
答案 0 :(得分:1)
如果你使用双引号,字符串中的变量将被它们的值替换,如果你使用单引号,它们就赢了。
你需要做的是用双引号替换单引号,并转义你已经有的双引号:
$ echo "m = uniform(0, 0, 1)" | \
sed "s#m = uniform(0, 0, 1)#m.LoadFile(\"run2_initial_$NF.ovf\")#g"
m.LoadFile("run2_initial_3.ovf")