Sed
從文件中刪除文本並保存,無需打開
我正在從多個文件中刪除重複的文本行。我嘗試使用的命令是
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