sed命令用斜杠替换字符串

sed command to replace string with slashes

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

的一行

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

你能帮忙吗?提前致谢。

如果要替换包含斜杠的字符串,只需为 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