gawk:发展、安装与使用指南
1. gawk的正则范围解释与发展历程
在gawk的发展过程中,正则表达式范围解释曾是一个令人困扰的问题。早期,gawk使用的正则匹配代码不支持本地化,范围具有传统的解释方式。然而,当gawk转向使用支持本地化的正则匹配器时,问题便接踵而至。特别是随着GNU/Linux和商用Unix供应商开始实现非ASCII本地化设置并将其设为默认,用户经常会问“为什么‘[A - Z]’会匹配小写字母?”这样的问题。
这种情况持续了将近10年之久,gawk维护者疲于向用户解释gawk是符合标准的,问题出在用户的本地化设置上。在gawk 4.0版本开发期间,维护者对其进行了修改,除非使用--posix选项,否则gawk总是以POSIX标准之前的方式处理范围。
幸运的是,在gawk 4.0最终发布前不久,维护者了解到2008年的标准已经改变了范围的定义,即在“C”和“POSIX”本地化设置之外,范围表达式的含义未被定义。这使得实现者可以自由选择如何实现范围解释。gawk维护者选择在默认的正则匹配以及使用--traditional或--posix选项时,都应用POSIX标准之前的含义,并且在所有情况下gawk都保持与POSIX标准兼容。
由此,“合理范围解释(Rational Range Interpretation,简称RRI)”运动诞生,许多GNU工具已经或即将实现这一改变。
2. gawk的主要贡献者
gawk的发展离不开众多开发者的贡献,以下是按大致时间顺序列出的主要贡献者:
| 贡献者