就地编辑
就地编辑是大多数近期系统中常见但非标准的扩展。
来自 BSD sed
手册
(这样的部分出现在所有当前的 BSD sed
手册中,以及它们的衍生物)
建议在编辑文件时不建议使用零长度扩展,因为在磁盘空间耗尽的情况下,它可能会出现损坏或部分内容,等等。
不要忘记强大的 ed
sed
和 sed
的就地编辑功能肯定有用,但是当 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
。