辞書へ戻る言語の一覧

AWK

おーく言語1977

テキストを行・列として処理するのに特化した小さな言語。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言語誕生への重要なインスピレーションになったという。

関連項目

  • シェルスクリプトUNIXのシェル(コマンド解釈器)への命令をまとめて書いて自動実行する仕組み。小さなコマンドをパイプで繋いで仕事をこなすUNIX文化を体現する。地味だが、サーバー運用や自動化の現場で今も毎日使われ続けている。
  • Perlラリー・ウォールが作った、テキスト処理に強いスクリプト言語。正規表現を手軽に扱え、初期のWeb(CGI)やシステム管理で広く使われた。「インターネットの接着剤」と呼ばれ、動的なWebの黎明期を支えた。

関連技術

出典