簡體   English   中英

sed有效,但sed -i返回錯誤

[英]`sed` works, but `sed -i` returns an error

我快要把我的問題扯掉了。

您看,此行有效:

sed -r -e 's/^([^#a-z]+)localhost/\1hostname.domain hostname localhost/' /etc/hosts

但是添加itty選項“ i”:

sed -ir -e 's/^([^#a-z]+)localhost/\1hostname.domain hostname localhost/' /etc/hosts

結果是:

sed: -e expression #1, char 60: invalid reference \1 on `s' command's RHS

有人可以告訴我怎么回事嗎?


更新:

伙計們,你們都給出了正確的答案。 顯然,我在那兒感到暫時的愚蠢。 謝謝你的提醒 :)

(也就是說,@ TJ Crowder首先回答,所以我給他打勾)

您已關閉-r (擴展語法)選項,因為附加到-i內容不是更多選項,而是可選的備份后綴。 從聯機幫助頁:

  -i [SUFFIX],-in-place [= SUFFIX]\n\n    在適當位置編輯文件(如果提供擴展名,則進行備份) 

因此,只需將它們分開:

sed -i -r -e 's/^([^#a-z]+)localhost/\1hostname.domain hostname localhost/' /etc/hosts

我認為您應該分開使用以下選項:寫-i -r而不是-ir,因為-i可能會將r解釋為后綴,以附加到舊的未編輯文件中,因此-r不被采用

“ -ir”的含義不同於“ -i -r”或“ -ri”,請參見手冊頁。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM