Sed

從文件中刪除文本並保存,無需打開

  • March 14, 2017

我正在從多個文件中刪除重複的文本行。我嘗試使用的命令是

sed -i 's/set autologout=10//g' /home/$x/.login

當我執行它時,我得到了這個錯誤

sed: -I or -i may not be used with stdin

該命令在沒有該-i選項的情況下成功執行,但它不會保存它。我正在編寫腳本,因為我正在修改每台伺服器上的每個帳戶的 2 個文件。我可以用一個醜陋的例外來編碼,我無法保存它。

@don_crissti 的評論所指的是BSD sed 似乎需要一個參數-i的事實,如果-e不使用,則將第一個參數作為sed命令。沒有為輸入文件留下任何內容,預設為stdin,並且您無法“就地”編輯該文件。

這與GNU sed-i相反,它有一個可選參數

或者換句話說,您sed可能將 解釋s/set autologout=10//g為 的參數-i,即用於備份文件的副檔名。因此,如果您不想留下備份文件,只需給該-i選項一個空參數:

sed -i "" 's/set autologout=10//g' /home/$x/.login

引用自:https://unix.stackexchange.com/questions/351460