就地编辑

就地编辑是大多数近期系统中常见但非标准的扩展。

来自 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