2016-03-08 74 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