在未来的POSIX(第8版)中标准化的awk功能包括 delete array,nextfile,fflush()

首先

下一版本的 POSIX(第8版,预计在2022年下半年发布)中将会标准化 awk 的功能,其中包括三个功能:删除数组(delete array)、下一个文件(nextfile)语句以及刷新(fflush())函数。

嗯?你以前不能用吗?我认为很多人都会这样想。是的,在大多数环境中,这些功能已经可以使用,所以不需要刻意称之为新功能。事实上,它们已经可以在许多实现中使用,并且被POSIX标准化。(POSIX的标准化过程并不是先制定规范,再去实现,而是在出现许多实现并被认为具有可移植性之后,进行标准化的过程,所以请不要弄混了。)

我查看了哪个版本开始可以使用,顺便确认了括号中的日期是这些变更的提案日期。

原生的中文释义:由于 Solaris 10/11 的 /bin/awk 是历史版本的 awk,所以甚至连函数都无法使用。原始的 awk 是指 nawk (BWK awk,One True awk),而 macOS 的 /usr/bin/awk 也是 nawk。我没有调查过 Debian 2.2 以前的环境,所以可能有更旧版本的 awk 可用。

One possible paraphrase in Chinese:
由于 Solaris 10/11 的 /bin/awk 是历史版本的 awk,因此连函数也无法使用。原始的 awk 是指 nawk (BWK awk,One True awk),而 macOS 的 /usr/bin/awk 也是 nawk。我没有对 Debian 2.2 以前的环境进行调查,所以可能有更旧版本的 awk 可供使用。

删除数组(2012年2月18日)

至少有gawk、mawk、BWK awk、Solaris /usr/xpg4/bin/awk和BusyBox awk。

我的研究

    • gawk 3.0.4 (Debian 2.2) ・・・ YES

 

    • mawk 1.3.3 (Debian 2.2) ・・・ YES

 

    • origian-awk 20000525 (Debian 2.2) ・・・ YES

 

    • Busybox awk 1.1.3 (Debian 4.0) ・・・ YES

 

    /usr/xpg4/bin/awk (Solaris 10/11) ・・・ YES

下一个文件(2012年9月14日)

下一条文件语句得到了几乎所有当前awk实现支持,具体如下:
BWK awk 20070501
gawk 3.1.7
mawk 1.3.4
BusyBox awk 1.15.1
awka 0.7.5
QSE awk 0.5.6

值得注意的是,以下平台没有提供支持:
* Solaris 10 /usr/xpg4/bin/awk
* jawk 1.02

我的调查
我的研究
我的调查研究

    • gawk 3.0.4 (Debian 2.2) ・・・ YES

 

    • mawk 1.3.3 (Debian 2.2 – 10) ・・・ NO

 

    • mawk 1.3.4 20200120 (Debian 11) ・・・ YES

 

    • origian-awk 20000525 (Debian 2.2) ・・・ YES

 

    • Busybox awk 1.1.3 (Debian 4.0) ・・・ YES

 

    /usr/xpg4/bin/awk (Solaris 10/11) ・・・ NO

刷新缓冲区(2012年12月4日)

fflush()是一种有用的扩展,长期以来在大多数awk版本中都可用,并且至少在以下现代版本中实现:

gawk 4.0.1
mawk 1.3.4-20121129
BWK awk 20110810
BusyBox 1.20.2 awk
awka 0.7.5

它在以下版本中不可用:

jawk 1.02
AIX 7.1 /usr/bin/awk
HP-UX 11i v2 /usr/bin/awk
Solaris 10 /usr/xpg4/bin/awk

我的调查

    • gawk 3.0.4 (Debian 2.2) ・・・ YES

 

    • mawk 1.3.3 (Debian 2.2) ・・・ YES

 

    • origian-awk 20000525 (Debian 2.2) ・・・ YES

 

    • Busybox awk 1.1.3 (Debian 4.0) ・・・ YES

 

    /usr/xpg4/bin/awk (Solaris 10/11) ・・・ NO

整理

delete array はほとんどの環境で問題なく使えそうです。

nextfile は mawk が新しい環境でないと使えないかもしれません。UNIX (macOS は除く)は使えない可能性があります。

fflush() は UNIX (macOS を除く)は使えない可能性があります。

mawk 除外,其他情况下似乎可以毫无问题地使用 nextfile(除了 macOS 之外的 UNIX)。根据 CHANGES 来看,mawk 的 nextfile 实现似乎是在 1.3.4 20120627 版本中,只是它在 Debian 上的部署较晚(删除数组和 fflush() 在 1996 年的 1.2 版本中已经支持)。

广告
将在 10 秒后关闭
bannerAds