2013-02-04 24 views
-1

我想用sed替換文件中的路徑。試圖逃脫/在sed上的Ubuntu

sudo sed 's/a/b/g' -i /tmp/test 

但是變量是

a = /var/lib and 
b = /data/lib 

如何逃脫斜線?

+0

可能重複的[使用斜線在sed取代](http://stackoverflow.com/questions/5864146/use-slashes-in-sed-replace) – tripleee

回答

3

s命令後面的字符不需要是/。當與路徑的工作,我用:,如:

sudo sed 's:a:b:g' -i /tmp/test 
1

您可以更改的sed的例如分隔符使用#代替:

$ sed 's#/var/lib#data/lib#' 
/var/lib 
data/lib 
0

在sed(1)中,與vi(1)中一樣,'/'只是慣用的分隔符。它可以與\進行轉義,導致「傾斜牙籤綜合症」改寫(munging)當路徑名:

sed -e 's/\/var\/lib/data\/lib/' ...

您可以使用另一種非文字字符,例如';':

sed -e 's;/var/lib;data/lib; ...