我需要一个sed
命令来替换包含/
的配置文件中的一行。
我想在文件中将/var/log/haproxy
更改为/root/myDir/haproxy
。
答案 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