慕婉清6462132
2019-11-08 10:19:05
我想在OS X上使用sed編輯文件。我使用以下命令:sed 's/oldword/newword/' file.txt輸出發送到終端。 file.txt未修改。使用以下命令將更改保存到file2.txt:sed 's/oldword/newword/' file1.txt > file2.txt但是我不想要另一個文件。我只想編輯file1.txt。我怎樣才能做到這一點?我已經嘗試過-i標志。這將導致以下錯誤:sed: 1: "file1.txt": invalid command code f
4 回答

萬千封印
TA貢獻1891條經驗 獲得超3個贊
您可以通過為-i標志提供后綴以將其添加到備份文件中來正確使用該標志。擴展您的示例:
sed -i.bu 's/oldword/newword/' file1.txt
將給您兩個文件:一個文件名file1.txt包含替換內容,另一個文件名包含file1.txt.bu原始內容。
輕度危險
如果要破壞性地覆蓋原始文件,請使用以下方法:
sed -i '' 's/oldword/newword/' file1.txt
^ note the space
由于行的解析方式不同,因此選項標記與其參數之間需要有一個空格,因為參數的長度為零。
除了可能破壞您的原件外,我不知道以這種方式欺騙sed的任何其他危險。但是,應注意,如果此調用sed是腳本的一部分,則Unix Way?(IMHO)將被sed無損使用,測試它是否干凈退出,然后才刪除無關的文件。

慕姐8265434
TA貢獻1813條經驗 獲得超2個贊
我對MacOS也有類似的問題
sed -i '' 's/oldword/newword/' file1.txt
不起作用,但是
sed -i"any_symbol" 's/oldword/newword/' file1.txt
效果很好。
添加回答
舉報
0/150
提交
取消