为什么几个 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 仍然是默认设置,主要原因有一个:
- 惯性。早就默认打包了。
请注意,mawk 是 POSIX 兼容的(在某种程度上)。来自其联机帮助页:
mawk conforms to the Posix 1003.2 (draft 11.3) definition of the AWK language
很遗憾,这不是您关心的版本...
鉴于更新其版本有多么困难:
- https://bugs.launchpad.net/ubuntu/+source/mawk/+bug/1332114
- https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=554167
(两者都仍然开放,后者自 2009 年以来!!),想象一下让 debian 完全用其他东西替换它会有多难!
我怀疑还有:
- 安装 gawk(或您喜欢的实现)真的很容易
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 仍然是默认设置,主要原因有一个:
- 惯性。早就默认打包了。
请注意,mawk 是 POSIX 兼容的(在某种程度上)。来自其联机帮助页:
mawk conforms to the Posix 1003.2 (draft 11.3) definition of the AWK language
很遗憾,这不是您关心的版本...
鉴于更新其版本有多么困难:
- https://bugs.launchpad.net/ubuntu/+source/mawk/+bug/1332114
- https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=554167
(两者都仍然开放,后者自 2009 年以来!!),想象一下让 debian 完全用其他东西替换它会有多难!
我怀疑还有:
- 安装 gawk(或您喜欢的实现)真的很容易