这主要是这里出现的一个好奇问题。
从 GNU sed 4.8 的手册页我读到
--posix
disable all GNU extensions.
所以我明白,如果像下面这样的代码有效,这意味着POSIX 允许-i 没有参数:
sed --posix -i -n '1,25p' *.txt
另一方面,相同的代码(带有或不带有--posix)对于 MacOS 的 BSD sed 不起作用,因为该版本需要-i后跟一个参数。
我只能看到两种相互排斥的可能性:
- GNU sed 的
--posix选项允许的不仅仅是 POSIX,这意味着它存在错误并需要错误报告 - BSD sed 不符合 POSIX。
真相是什么?