awkは、使いこなせるようになるとなかなか便利なツールです(こんなに年をとってからではなく、若いころに出会っていればよかった・・・・。)。
awkは、一つのプログラミング言語とも言えるほどの機能を持ちます。
また、いろんな改良(拡張)がされて、いくつかの種類(派生版)があります。
代表的なものだけでも、
1 awk(元祖AWK)
2 nawk(New AWK)
3 gawk(GNU AWK)
4 mawk(Mike Brennan作のAWK)
があります。2 nawk(New AWK)
3 gawk(GNU AWK)
4 mawk(Mike Brennan作のAWK)
「種類」とか「派生」という上記のような呼び方ではなく、専門的には、「実装」とか「処理系」などと、日常的にはあまり使われない用語で呼ばれています。
デフォルトの awk として、
1 Debian 系では mawkが、
2 RedHat 系では gawk が
それぞれ採用されています。
また、macOS や BSD 系でデフォルトでインストールされているのは nawk のようです。
どの処理系がインストールされているかの確認には、バージョンを見分けるためのコマンドを使います。
「awk --version」
とか、
「awk -W version」
というコマンドを打ち込むと、
バージョンが分かると同時に、どのawk処理系が入っているのかを把握できます。
下の画像をご覧ください。
ターミナルを起動して、awkのバージョンを確認するコマンドを実行した結果を、スクリーンショットした図です。
上に掲載の図のように、バージョン確認の実行により、このPCにインストールされているawkの処理系は、「mawk」であることが分かります。
我が家にはたくさんのPCがありますが、そのうち、計2台のノートPCにLinuxをインストールしています。
その2台のPCに入れているLinuxの環境と、ディストリビューションは、
1台の方が、
Oracle VM VirtualBox 上に
Ubuntu 22.04LTS
もう片方は、
WSL(Windows Subsystem for Linux)2 上に
Ubuntu 22.04LTS
です。
その2台のPCに入っているawkのバージョンを調べていて、ちょっとした発見がありました。処理系の違いです。
上記2台のPCにインストールしているLinuxは、どちらも(2台とも)Debian系であるUbuntuです。バージョンの違いもありません。
そのどちらもDebian系なので、インストールされているawkも、同じ処理系「mawk」と思っていました。
ところが、実際に確認してみると、これが違っていたんですねぇ。
VirtualBox 上のUbuntu には、「mawk」
WSL2 上のUbuntuには、「gawk」
が、それぞれ入っていました。
「へぇ~、同じUbuntuなのに違うんだ。」っていう、ちょっとした発見です。
gawkの方が高機能なのに対し、処理速度で勝るのはmawkの方です(2倍の速度差と言われています。)。
おそらく、WSL2を通じてインストールしたUbuntuの「gawk」の方が変則的だと思われます。Ubuntuには、原則的にはmawkが入ることになっている、・・・はずだからです。
そうすると、今後、
「両者で挙動が違う(こともある)のを前提にして、利用することになるのかなぁ。」
・・・なんて考えているところです。
◆ プログラミング言語AWK 第2版
◆ awk作者の手によるawk基本書《第2版》
それでは、また次の記事で
■■■■ goosyun ■■■■