在这种情况下,我指的是original-awk/stable,now 2012-12-20-6
。
换句话说,是否有* nix / BSD的重要版本正在运行Awk编程语言(Aho,Weinberger,Kernighan)未正确描述的AWK版本?
答案 0 :(得分:1)
您似乎在做出一些假设,并在这里提出几个问题。
https://github.com/onetrueawk/awk是否完全实现了POSIX规范,而没有其他实现?
我认为答案是否定的。可能由于规范不够详细,或者由于作者实现了该标准未指定的功能,POSIX并未描述这些行为。
还请注意,FIXES
自今年早些时候开始描述了POSIX兼容性增强功能;即使维护者的意图很可能是坚持POSIX,也可能不是最后一个。
POSIX也是一个移动的目标。尽管进度很慢,但它会更新。
1988年的书是否符合2019年的POSIX标准?
不,显然不是。它们是两种完全不同的文档,其用途完全不同。
原始的Awk实现是否影响POSIX?很明显。他们是否接受它并将其声明为一个真正的参考实现?显然不是。一方面,这肯定会冒他们的使命的风险-如果您希望互操作性委员会的工作在该领域取得成功,那么您就不能以牺牲他人为代价来支持任何特定的实现。
POSIX是否是合理的兼容性基线?
最终应该如此,但是在某些情况下,例如较小的内存占用比实际的互操作性更重要,更不用说花费时间和金钱来获得橡皮图章了。
(不要误会我的意思,在很多情况下,我和许多其他人将为该证书付费,或者如果缺少该证书,则将我们的钱花在其他地方。我只是指出,在很多情况下,我们赢得了不在乎。)
无论如何,您似乎都从错误的角度来接近这个目标。除非您比Awk作者更了解POSIX规范,否则脚本中可能存在互操作性错误,如果您的脚本在完美实现相关POSIX规范的Awk实现下运行,这些错误将不会消失。您的测试套件应该测试特定的行为,而不是从您的角度相信该规范及其实现没有错误。
bwk
是兼容性的最低基准吗?
不,我想您会发现还有其他一些Awk实现,在某些情况下,这些实现更为原始。
我的记忆模糊,但是我回想起Awk领先的情况(可能支持Unicode吗?)和mawk
而不是nawk
的情况,没表现。
在后台,有人登场窃窃私语“ Busybox”。
这是2012年代表的产品吗?
绝对不是。如上所述,bwk
的Awk仍得到积极支持,甚至得到开发。
答案 1 :(得分:1)
这不是答案,但根据my comment,这是POSIX未定义的项目列表,我请问gawk的人员在您使用[[:digit:]]
调用gawk时提供警告:
请注意,除了POSIX兼容性之外,还有其他可移植性问题。例如,像nawk
这样的字符类可移植到所有POSIX awk,但至少一个普通的awk(名称不佳的--posix
不支持)(它在80年代中期问世时是新的与70年代中期的老awk进行比较-现在,不是很多!)。
上表也没有包含明显记录为gawk扩展的功能,并没有被gensub()
之类的--lint
禁用,也没有--lint
已报告的任何内容-我创建该文件的意图是以获得 order allow,deny
allow from 172.26.0.0/16 (IP of the nginx-proxy)
allow from nginx-proxy.net (name of the container)
allow from x.x.x.x (another IPes)
deny from all
输出中包含的“缺失”未定义行为。