为什么几个 Linux 发行版默认提供 mawk,即使它不 POSIX 兼容?

Why do several Linux distros ship mawk by default even though it is not POSIX compliant?

mawk 不 POSIX 兼容,因为它不支持 POSIX ERE。

准确地说,它不支持其 ERE 中的命名字符 class,例如 [[:space:]],这些 ERE 是 POSIX ERE 的一部分。

GNU awk 和 BusyBox awk 好像都没有这个问题

我在自己的 awk 脚本中多次遇到这个问题,因为我真的很喜欢 [[:space:]] 来匹配 htabs 以及 spaces 和可能的其他特定于语言环境的whitespace 带有单个字符 class 表达式。

所以我想知道为什么几个 Linux 发行版选择默认发布这样一个突出实用程序的非 POSIX 兼容实现,即使 POSIX 兼容的也是如此可用吗?

http://archive.debian.org,好像是:

  • mawk 在 1997 年左右作为 1.3.3
  • 出现
  • busybox 出现在 2002 年左右,为 0.60.2
  • busybox 终于在 2006 年达到版本 1 (1.1.3)

我认为 mawk 仍然是默认设置,主要原因有一个:

  1. 惯性。早就默认打包了。

请注意,mawk POSIX 兼容的(在某种程度上)。来自其联机帮助页:

mawk conforms to the Posix 1003.2 (draft 11.3) definition of the AWK language

很遗憾,这不是您关心的版本...

鉴于更新其版本有多么困难:

(两者都仍然开放,后者自 2009 年以来!!),想象一下让 debian 完全用其他东西替换它会有多难!

我怀疑还有:

  1. 安装 gawk(或您喜欢的实现)真的很容易