就地編輯

就地編輯是大多數近期系統中常見但非標準的擴充套件。

來自 BSD sed 手冊

(這樣的部分出現在所有當前的 BSD sed 手冊中,以及它們的衍生物)

建議在編輯檔案時不建議使用零長度擴充套件,因為在磁碟空間耗盡的情況下,它可能會出現損壞或部分內容,等等。

不要忘記強大的 ed

sedsed 的就地編輯功能肯定有用,但是當 UNIX 標準擴充套件時,我們應該總是問為什麼舊的 UNIX 標準不包含該功能。雖然 UNIX 並不完美,但工具的正交性和完整性已經發展到接近完美,至少在 1970 年左右可見的目的: 文字編輯和自動文字編輯在那個時候肯定是可見的。

實際上,sed 的想法不是編輯檔案,而是編輯。這就是為什麼名稱 sed流編輯器的簡短形式。拿掉 s,你就得到了實際用於檔案編輯的工具 :ed

printf 'g/what to replace/s//with what to replace/g\nw\nq\n' | ed file

或者 cat file_edit_commands | ed file