AWK
テキストを行・列として処理するのに特化した小さな言語。Unixの定番ツールで、ログ処理やデータ整形に今も使われる。
時代背景
AWKはWikipedia英語版によれば1977年、ベル研究所でAlfred Aho・Peter Weinberger・Brian Kernighanの3人によって作られた。名前は3人の姓の頭文字(A-W-K)に由来する。Aho・Kernighan・Weinberger共著『The AWK Programming Language』初版は1988年に出版された(awk.dev公式ページ)。AWKはVersion 7 Unixに登場した初期のツールの一つで、Bourneシェルというそれまで唯一の標準的なUnixスクリプト言語に、計算的な機能をパイプラインに追加するものだったとWikipedia英語版は説明している。
名前の由来
Wikipedia英語版によれば、AWKという名前は作者3人の姓——Alfred Aho(egrepの作者)、Peter Weinberger(小さなリレーショナルデータベースに取り組んでいた)、Brian Kernighan——の頭文字を組み合わせたものである。この頭字語は海鳥の一種「auk(アウク、ウミガラス科)」と同じ発音であり、『The AWK Programming Language』の表紙にはそのウミガラスが描かれているという。
仕組み
Wikipedia英語版によれば、Brian Kernighan本人の説明として、AWKの目標の一つは数値と文字列の両方を簡単に扱えるツールを作ることだった。またAWKは、yaccを使って実装されたMarc Rochkindによる入力データ中のパターン検索プログラミング言語からも着想を得たとされる。AWKはテキストの各行を処理しながらパターンとアクションの組を評価していく「データ駆動型」の言語で、連想配列(キー文字列で添字付けされた配列)や正規表現を多用する。適用領域は限定的でワンライナー向けに設計されているが、チューリング完全であり、ベル研究所の初期ユーザーもよく構造化された大きなAWKプログラムを書いていたとWikipedia英語版は述べている。
種類・系譜
Wikipedia英語版によれば、1985年に登場したnawk(New AWK)はAWKを大きく改訂・拡張したもので、1988年にはPaul Rubin・Jay Fenlason・Richard StallmanによりGNU AWK(gawk)の実装が公開された。GNU系Linuxパッケージに含まれるためgawkは最も広く使われている実装とされ、1994年以降はArnold Robbinsが単独でメンテナンスを続けている。Kernighan本人によるnawkのソースコードは1993年に非公式にリリースされ、GPLライセンスを避けたい多くのBSD系システムで採用された。AWKはsed(1974年)に先行され、両者とも行指向・データ駆動型のパラダイムを共有しており、強力な正規表現処理と簡潔さは1987年のPerl言語誕生への重要なインスピレーションになったという。