つれづれ電脳記(日くらしPCに向かひて)

つれづれなるままに、日くらしPCに向かひて、その悪戦苦闘ぶりをそこはかとなく書き付くるおじさん。たまに雑談[管理人:goosyun]

つれづれなるままに、日くらしPCに向かひて、デジタル関係の悪戦苦闘ぶりをそこはかとなく書き付くるおじさんです。
たまに雑談してます。連絡・問い合わせフォームは、ページ最下部に置いています。[著者(運営人):goosyun]

(当ブログには本文中に広告リンクが含まれています。)

同じUbuntuなのにawk処理系が異なる~mawkとgawk

 今、PCでのテキスト処理ツールawk(オーク)を学習している途中です。
 awkは、使いこなせるようになるとなかなか便利なツールです(こんなに年をとってからではなく、若いころに出会っていればよかった・・・・。)。





 awkは、一つのプログラミング言語とも言えるほどの機能を持ちます。
 また、いろんな改良(拡張)がされて、いくつかの種類(派生版)があります。

 代表的なものだけでも、
1 awk(元祖AWK
2 nawk(New AWK
3 gawkGNU AWK
4 mawk(Mike Brennan作のAWK
があります。

 「種類」とか「派生」という上記のような呼び方ではなく、専門的には、「実装」とか「処理系」などと、日常的にはあまり使われない用語で呼ばれています。

 デフォルトの awk として、
  1 Debian 系では mawkが、
  2 RedHat 系では gawk
それぞれ採用されています。
 また、macOSBSD 系でデフォルトでインストールされているのは 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