我想用sed替換文件中的路徑。試圖逃脫/在sed上的Ubuntu
sudo sed 's/a/b/g' -i /tmp/test
但是變量是
a = /var/lib and
b = /data/lib
如何逃脫斜線?
我想用sed替換文件中的路徑。試圖逃脫/在sed上的Ubuntu
sudo sed 's/a/b/g' -i /tmp/test
但是變量是
a = /var/lib and
b = /data/lib
如何逃脫斜線?
在s
命令後面的字符不需要是/
。當與路徑的工作,我用:
,如:
sudo sed 's:a:b:g' -i /tmp/test
您可以更改的sed的例如分隔符使用#
代替:
$ sed 's#/var/lib#data/lib#'
/var/lib
data/lib
這應該工作
sed -i "[email protected][email protected][email protected]" /tmp/test
兩件事需要注意:
1)如果你想使用可變在您的sed行中使用雙引號
2)分隔符可以不是「/
」,例如「/
」。 @, #, : ...
在sed(1)中,與vi(1)中一樣,'/'只是慣用的分隔符。它可以與\
進行轉義,導致「傾斜牙籤綜合症」改寫(munging)當路徑名:
sed -e 's/\/var\/lib/data\/lib/' ...
您可以使用另一種非文字字符,例如';':
sed -e 's;/var/lib;data/lib; ...
可能重複的[使用斜線在sed取代](http://stackoverflow.com/questions/5864146/use-slashes-in-sed-replace) – tripleee