使用不同的分隔符

POSIX / IEEE Open Group Base 规范

[2addr] s / BRE / replacement / flags

用替换字符串替换模式空间中 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