使用不同的分隔符
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