AWK

コンピューターを使っていると、手作業は面倒だけどそれ専用のコマンドなんか無いだろう、というような、「ここに孫の手があれば」的場面に遭遇することがある。 そういう時に重宝するのが awk である。

Awk にできることは、文字列の操作と計算である。 Grep や sed に計算能力が加わったようなもので、大抵の仕事は awk で済む。 ただしバイナリーを扱うことは苦手である。 つまり、基本的に awk はテキストを扱うものである。 元は、unix に付属したものだが、今では DOS や Mac を含む様々なシステムに移植されている。

オリジナルの awk は、今ではほとんど使われない。 普通の unix では、nawk (New AWK)という拡張されたものが付属する。 (System V 系だけかも?) 「教典」とも呼ばれる解説書「プログラミング言語 AWK」はこの版に基づいて説明されている。 現在では、IEEE の POSIX で規定された更なる拡張(あるいは変更)を取り入れた実装が幾つか存在する。 一番有名なものは、GNU プロジェクトの一環として作成された gawk であろう。 Mawk はもう一つの POSIX 準拠の awk である。 日本語化も行われているものは、おそらくこの2つだけである。 他に、教典には MKS awk や Poly awk などというのも載っているが、今でも現役かは不明である。

Arithmetica

ここらで、自作スクリプトの宣伝をしておこう。 Awk は計算ができるが、基本的に浮動小数点数としてである。 であるから、大きな桁の整数を整数として扱うことができない。 そこで、作った多倍長整数パッケージが arithmetica である。 名前からして Mathematica を意識していることがバレバレだが、あそこまで壮大なものにする気もないし、できるとも思えない。 ということで、加減乗除と幾つかの整数論的関数だけ提供している。

勿論、フリーソフトである。 できたら、要望とかバグ報告とかしてくれると有り難いが、まあ、あまり使う機会もないかもしれない(よわよわ)。

Hadamard edition は新しい版である。 旧版に対する主な改良点としては、因数分解の関数を書き換えて SQUFOF 法を使うことにしたことが挙げられる。 もっと現代的なアルゴリズムを使わないのは、開発環境(DOS)のメモリーが貧弱で実装不能だからである(^^;

ダウンロード

以下のリンクのうち、lzh 版が遠い昔から配布していたファイル。 説明が全て Shift_JIS で書かれているし、改行コードは CRLF だし、解凍するとファイル名が全部大文字だったりするし、あまりにもあまりにもなもの。 というわけで、UTF-8 + LF で(意図的に大文字のファイルを除いて)ファイル名を小文字にした zip 版と tar.xz 版を用意した。 ファイル形式の後ろの数字は参考までにファイルサイズ。 (2011-11-07)

Awk で作る CGI スクリプト

CGI というと perl という連想があまりにも一般化しているが、別に perl でしか作ってはいけない訳ではない。 だからここでは awk で書こう、というわけである。


文責 : Fe2+