首页 > 解决方案 > -i 不带参数:是 GNU sed --posix 选项被窃听还是 BSD sed 不符合 POSIX?

问题描述

这主要是这里出现的一个好奇问题。

从 GNU sed 4.8 的手册页我读到

       --posix

              disable all GNU extensions.

所以我明白,如果像下面这样的代码有效,这意味着POSIX 允许-i 没有参数:

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

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

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

真相是什么?

标签: sedposixgnubsdgnu-sed

解决方案


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

GNU sed 包括对 POSIX sed 的几个扩展。为了简化编写可移植脚本,此选项禁用本手册记录的所有扩展,包括附加命令。

POSIX 没有指定-i,因此没有它的实现仍然可以符合 POSIX。


推荐阅读