14. 改变分隔符
在上述所有 sed 示例中,我们使用默认的 sed 分隔符/
。
即s/original-string/replacement-string/
,当original-string
或replacement-string
中存在斜杠/
时,我们需要使用\
对其进行转义。
示例
对于本示例,创建如下文件,其中包含目录路径。
$ vi path.txt
reading /usr/local/bin directory
Example1:使用 "\"
转义 "/"
现在,让我们使用 sed 替换命令将/usr/local/bin
更改为/usr/bin
。
在此 sed 替换示例中,在original-string
和replacement-string
中使用反斜杠\
对分隔符路径分隔符/
进行转义。
$ sed 's/\/usr\/local\/bin/\/usr\/bin/' path.txt reading /usr/bin directory
Example2:使用其他分隔符
有点丑陋不是吗?当您尝试替换长路径名时,使用所有这些转义字符\
可能会非常混乱。
幸运的是,您可以使用任何字符作为替换分隔符。 例如,|
或^
或@
或!
。
以下所有内容均有效且易于阅读。我没有显示命令的输出,因为它们都产生完全相同的结果。
我更喜欢在替换目录路径时使用@
(或!
)符号,但这是您个人的选择。
sed 's|/usr/local/bin|/usr/bin|' path.txt sed 's^/usr/local/bin^/usr/bin^' path.txt sed 's@/usr/local/bin@/usr/bin@' path.txt sed 's!/usr/local/bin!/usr/bin!' path.txt