sed命令用斜杠替换字符串

时间:2016-07-12 19:38:01

标签: sed command

我需要一个sed命令来替换包含/的配置文件中的一行。

我想在文件中将/var/log/haproxy更改为/root/myDir/haproxy

你能帮帮忙吗?提前谢谢。

1 个答案:

答案 0 :(得分:0)

如果要替换包含斜杠的字符串,只需为sed表达式使用不同的分隔符:

sed 's@/var/log/haproxy@/root/myDir/haproxy@g' <file>

以下是一个例子:

$ echo /var/log/haproxy | sed 's@/var/log/haproxy@/root/myDir/haproxy@g'
/root/myDir/haproxy

sed将自动使用s后面的任何字符作为分隔符。这些也有效:

$ echo /var/log/haproxy | sed 's#/var/log/haproxy#/root/myDir/haproxy#g'
/root/myDir/haproxy
$ echo /var/log/haproxy | sed 's^/var/log/haproxy^/root/myDir/haproxy^g'
/root/myDir/haproxy
$ echo /var/log/haproxy | sed 's%/var/log/haproxy%/root/myDir/haproxy%g'
/root/myDir/haproxy

你也可以逃避路径中的/并继续使用/,但这更难阅读,所以我不推荐它:

$ echo /var/log/haproxy | sed 's/\/var\/log\/haproxy/\/root\/myDir\/haproxy/g'
/root/myDir/haproxy