awk的nextfile是在POSIX中指定的吗?

awk的nextfile是在POSIX中指定的吗?

GNU awk 手册nextfile内容如下:

笔记:多年来,nextfile这是一个常见的扩展。 2012 年 9 月,它被纳入 POSIX 标准。看奥斯汀集团网站

同样地,莫克手册说:

Nextfile 是 gawk 扩展(也由 BWK awk 实现),尚未成为 POSIX 标准的一部分(截至 2012 年 10 月),尽管它已被该标准的下一个修订版所接受。

让我困惑的是没有nextfile提到最新的 POSIX 规范,从 2018 年开始。

通过奥斯汀集团的链接,您会发现该问题已于 2012 年得到解决(甚至有最终接受的文本),但仅在 2020 年应用(!)。

总而言之,这是否意味着nextfileawk 的功能是由 POSIX 指定的?或者只会在未来的 POSIX 版本中如此?

(出于实际目的,nextfile还可以在BSD awk.)

另外两个语句处于相同的情况nextfilefflushdeletedelete已经指定,但要扩展以便能够删除整个数组)。

答案1

你会看到错误 607目标是第 8 期,尚未发布(请参阅第8期 标签)。

第7期于2008年发布,第7期有一些较新的版本,最新版本是2018年,但这些都是技术勘误,它们没有带来新功能。

nextfile不仅是一个新功能,而且还破坏了向后兼容性,因为awk '{nextfile = 1}'和是在当前 POSIX 版本中分别设置和检索变量值的awk '{nextfile}'有效调用,因此可能无法将其添加为技术勘误的一部分。awknextfile

在 TC 中可以添加(并且可能应该添加)的是告诉人们这nextfile是一个保留供将来使用的单词,这样人们就不应该在变量或函数名称中使用它,就像脚本那样awk '{nextfile = 1}',尽管完全标准,但确实如此在许多实现中不起作用awk(不限于nextfile顺便说一句)。

awk您可以在以下位置查看单一 UNIX 规范第 7 期 2018 年版部分内容的 HTML 版本:https://pubs.opengroup.org/onlinepubs/9699919799.2018edition/utilities/awk.html(请注意该.2018edition部分),但请注意,尽管它是由 Opengroup 发布的,但 HTML 版本没有标准价值,只有 PDF 具有标准价值(您需要向他们注册才能访问它)。

他们是意思是同样,尽管过去在转换为 HTML 时存在一些错误,导致部分丢失(尽管发现后通常会很快修复),所以当有疑问时,最好检查 PDF。

答案2

POSIX 标准化可以被视为两项不同的工作:

  • 不影响接口的错误修复,这作为所谓的技术勘误表发布。目前的Issue 7标准基本上是2008年的,2018年的版本是TC2。

  • 影响界面的新功能。这需要标准的新主要版本。

awk 问题如果被标记为Issue 8指定原因,我们目前正在努力最终确定第 8 版标准,预计将于 2021 年准备就绪。

相关内容