2016-03-08 70 views
0

工作,如果我运行的sed使用以下使用sed不变量值

sed -i -e 's/a.b.c/l.m.n/g' file.txt 

它工作正常。然而 做

OLD="a.b.c" 
NEW="l.m.m" 
sed -i -e 's/$OLD/$NEW/g' file.txt 

创建了名file.txt的-E的新文件,并没有做更换

回答

1

你使用单引号,当你需要双引号:

sed -i -e "s/$OLD/$NEW/g" file.txt 

也请记住,将.放入变量中并不会从正则表达式的角度转义它。所以这将匹配a.b.caJbKc以及所有那些有趣的东西。

+1

确实;我的[这个答案](http://stackoverflow.com/a/29613573/45375)显示如何一般性地使用'sed'(使用单独的'sed'命令)将变量值作为文字使用。 – mklement0