我正在尝试使用 sed 替换文件中的路径。
sudo sed 's/a/b/g' -i /tmp/test
然而变量是
a = /var/lib and
b = /data/lib
我如何逃脱斜线?
我正在尝试使用 sed 替换文件中的路径。
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 "s@$a@$b@g" /tmp/test
您需要注意两件事:
1)如果要在 sed 行中使用变量,请使用双引号
2) 分隔符可以不是“ /
”,例如@, #, : ...
在 sed(1) 中,与在 vi(1) 中一样,“/”只是常用的分隔符。它可以用 转义\
,在修改路径名称时导致“倾斜牙签综合症”:
sed -e 's/\/var\/lib/data\/lib/' ...
您可以使用另一个非单词字符,例如';':
sed -e 's;/var/lib;data/lib; ...