[英]`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.