sed 使用不同的分隔符

示例

POSIX / IEEE开放组基本规范说:

[2addr] s / BRE /替换/标志

将替换字符串替换为模式空间中BRE的实例。除反斜杠或换行符外,可以使用任何其他字符代替斜杠来分隔BRE和替换字符。在BRE及其替换中,如果BRE分隔符本身以反斜杠开头,则可以用作文字字符。

在某些情况下/,sed替换定界符在BRE或替换中,会触发如下错误:

$ echo "2/3/4" | sed "s/2/3/X/"
sed: -e expression #1, char 7: unknown option to `s'

对于这一点,我们可以使用不同的分隔符,例如#或者_甚至是一个空间:

$ echo "2/3/4" | sed "s#2/3#X#"
X/4
$ echo "2/3/4" | sed "s_2/3_X_"
X/4
$ echo "2/3/4" | sed "s 2/3 X "
X/4