Linux `sed`works,但`sed-i`返回一个错误

Linux `sed`works,但`sed-i`返回一个错误,linux,sed,Linux,Sed,我几乎要为我的问题大发雷霆了 你看,这条线的作用是: sed -r -e 's/^([^#a-z]+)localhost/\1hostname.domain hostname localhost/' /etc/hosts 但添加itty选项“i”: 结果: sed: -e expression #1, char 60: invalid reference \1 on `s' command's RHS 有人能告诉我发生了什么事吗 更新: 各位,你们都给出了正确的答案。很明显,我在那里一时哑

我几乎要为我的问题大发雷霆了

你看,这条线的作用是:

sed -r -e 's/^([^#a-z]+)localhost/\1hostname.domain hostname localhost/' /etc/hosts
但添加itty选项“i”:

结果:

sed: -e expression #1, char 60: invalid reference \1 on `s' command's RHS
有人能告诉我发生了什么事吗


更新: 各位,你们都给出了正确的答案。很明显,我在那里一时哑口无言。谢谢你提醒我:)


(也就是说,@T.J.Crowder首先回答,所以我给他打勾)

您已经关闭了
-r
(扩展语法)选项,因为您附加到
-I
的不是更多选项,而是可选的备份后缀。从手册页:


我认为您应该分开选择:write-I-r和not-ir,因为-I可能会将r解释为要附加到旧的未编辑文件的后缀,这样-r就不会被采用。

“-ir”的意思与“-I-r”或“-ri”不同,请参见手册页。

是的,我很笨。就在您发布答案的几秒钟前,在
man sed
中看到了
-i
的条目。将您的标记为正确。(不,我不需要任何备份,因此不需要您的
-ir
;只需
-I-r
)+1就可以解释答案。所以不是告诉人们使用RTFM,而是告诉他们应该在FM中查看的位置,以及为什么,IMHO。嗨,我刚遇到这个问题,你好像忘记接受答案了。我可以发誓我已经点击了复选标记。。。哦,好吧,再做一次也没什么坏处
sed: -e expression #1, char 60: invalid reference \1 on `s' command's RHS
-i[SUFFIX], --in-place[=SUFFIX] edit files in place (makes backup if extension supplied)
sed -i -r -e 's/^([^#a-z]+)localhost/\1hostname.domain hostname localhost/' /etc/hosts