0
Help us understand the problem. What are the problem?

posted at

updated at

次期POSIX(Issue 8)で標準化されるawkの機能は delete array, nextfile, fflush()

はじめに

次期 POSIX (Issue 8、2022 年後期予定)で標準化される awk の機能は delete arraynextfile ステートメント、fflush() 関数の 3 つです。

あれ?今まで使えなかったの?と思う人も多いと思います。はい、いずれもほとんどの環境ですでに使える機能なのであえて新機能とは呼びません。というよりすでに多くの実装で使えるから POSIX で標準化されるわけです。(POSIX は仕様ができてから実装されるという流れではなく、多くの実装が登場して移植性があると認められたものを標準化するという流れなのでお間違えなきよう)

ついでにどのバージョンから使えるようになっているのかを確認しました。見出しのカッコの中の日付は、これらの変更が提案された日付です。

補足 Solaris 10/11 の /bin/awk は歴史的な awk なので関数すら使えません。original-awknawk (BWK awk , One True awk) のことで、macOS の /usr/bin/awknawk です。Debian 2.2 より前の環境は調査していないのでそれよりも古いバージョンから使える可能性が高いです。

delete array (2012-02-18)

At least gawk, mawk, BWK awk, Solaris /usr/xpg4/bin/awk, and 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

nextfile (2012-09-14)

The nextfile statement is supported by the vast majority of current awk implementations, specifically:

  • 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

Support is notably absent from:
* 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

fflush (2012-12-04)

fflush() is a useful extension that has long been available in the most versions of awk, and is implemented in at least the following modern versions:

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

It is absent from:

  • 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 を除く)は使えない可能性があります。

nextfile は mawk の場合に少し注意が必要そうですけど、それ以外はほぼ問題なく使えそうです(macOS 以外の UNIX を除く)。mawk の nextfile も Debian に搭載されるのが遅かっただけで CHANGES を見る限り 1.3.4 20120627 には実装されてるようです(delete arrayfflush() は 1996 年の 1.2 の時点ですでに対応済み)。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
0
Help us understand the problem. What are the problem?