在sed中可以使用什么分隔符?

在sed中可以使用什么分隔符?,sed,gnu,delimiter,Sed,Gnu,Delimiter,当人们想要使用包含sed定界符的模式时,通常会看到人们抱怨sed中s'的未知选项出错 例如,如果我们正在使用/: $ var="hel/lo" $ sed "s/a/$var/g" <<< "haha" sed: -e expression #1, char 9: unknown option to `s' 但是,我想知道sed可以接受哪些分隔符。。。因为它几乎是任何字符,包括类似正则表达式的字符(*,?,,…) 在mysed(GNU-sed)4.2.2中: $ sed 's

当人们想要使用包含
sed
定界符的模式时,通常会看到人们抱怨
sed
中s'的
未知选项出错

例如,如果我们正在使用
/

$ var="hel/lo"
$ sed "s/a/$var/g" <<< "haha"
sed: -e expression #1, char 9: unknown option to `s'
但是,我想知道
sed
可以接受哪些分隔符。。。因为它几乎是任何字符,包括类似正则表达式的字符(
*
,…)

在my
sed(GNU-sed)4.2.2中:

$ sed 's/a/b/g' <<< "haha"
hbhb
$ sed 's_a_b_g' <<< "haha"
hbhb
$ sed 's#a#b#g' <<< "haha"
hbhb
$ sed 's$a$b$g' <<< "haha"
hbhb
$ sed 's?a?b?g' <<< "haha"
hbhb
$ sed 's*a*b*g' <<< "haha"
hbhb
$ sed 's-a-b-g' <<< "haha"
hbhb
$ sed 's.a.b.g' <<< "haha"
hbhb
$ sed 'sXaXbXg' <<< "haha"
hbhb
$ sed 'sxaxbxg' <<< "haha"
hbhb
$ sed 's1a1b1g' <<< "haha"
hbhb

是否有相关规范?

可能是最接近标准的POSIX/IEEE开放组基础规范:

[2addr]s/BRE/replacement/flags

将替换字符串替换为中BRE的实例 模式空间除反斜杠或换行符以外的任何字符都可以 用于代替斜线来分隔BRE和替换。 在BRE和替换中,可以使用BRE分隔符本身 如果前面有反斜杠,则用作文字字符。“


sed statement@geirha不确定您在这里的意思。尝试
sed'sahanag'注释的可能副本,它必须是一个单字节字符。我不明白。我可以使用:
sed's\hello\hello\'文件名
并且可以工作。反斜杠有什么特别之处?也许您的sed没有100%符合POSIX规范!什么平台你在上什么表格?
$ sed 's/a/b/g' <<< "haha"
hbhb
$ sed 's_a_b_g' <<< "haha"
hbhb
$ sed 's#a#b#g' <<< "haha"
hbhb
$ sed 's$a$b$g' <<< "haha"
hbhb
$ sed 's?a?b?g' <<< "haha"
hbhb
$ sed 's*a*b*g' <<< "haha"
hbhb
$ sed 's-a-b-g' <<< "haha"
hbhb
$ sed 's.a.b.g' <<< "haha"
hbhb
$ sed 'sXaXbXg' <<< "haha"
hbhb
$ sed 'sxaxbxg' <<< "haha"
hbhb
$ sed 's1a1b1g' <<< "haha"
hbhb
$ sed 'saaabag' <<< "haha"
sed: -e expression #1, char 5: unknown option to `s'
$ sed 'sa\aabag' <<< "haha"
hbhb