-i 不带参数:是 GNU sed --posix 选项有问题还是 BSD sed 不符合 POSIX?

-i without argument: is GNU sed --posix option bugged or BSD sed is not POSIX-compliant?

这主要是一个好奇的问题

我阅读了 GNU sed 4.8 的手册页

       --posix

              disable all GNU extensions.

所以我明白如果像下面这样的代码有效,这意味着 -i without argument is allowed by POSIX:

sed --posix -i -n '1,25p' *.txt

另一方面,相同的代码(带或不带 --posix)不适用于 MacOS 的 BSD sed,因为该版本要求 -i 后跟一个参数。

我只能看到两种互斥的可能性:

真相是什么?

--posix指的是sed语言本身,不是命令行界面:

GNU sed includes several extensions to POSIX sed. In order to simplify writing portable scripts, this option disables all the extensions that this manual documents, including additional commands.

POSIX 没有指定 -i,所以没有它的实现仍然可以 POSIX-conforming。