移動先 先頭, 前, , 末尾 セクション, 目次.

"To boldly go where no man has gone before" is a Registered Trademark of Paramount Pictures Corporation.

Copyright (C) 1989, 1991, 92, 93, 96, 97, 98, 99 Free Software Foundation, Inc.

This is Edition 1.0.4 of Effective AWK Programming,
for the 3.0.4 (or later) version of the GNU implementation of AWK.

Published jointly by:

@multitable {Specialized Systems Consultants, Inc. (SSC)} {Boston, MA 02111-1307 USA}

  • Specialized Systems Consultants, Inc. (SSC) @tab Free Software Foundation
  • PO Box 55549 @tab 59 Temple Place -- Suite 330
  • Seattle, WA 98155 USA @tab Boston, MA 02111-1307 USA
  • Phone: +1-206-782-7733 @tab Phone: +1-617-542-5942
  • Fax: +1-206-782-7191 @tab Fax: +1-617-542-2652
  • E-mail: sales@ssc.com @tab E-mail: gnu@gnu.org
  • URL: http://www.ssc.com/ @tab URL: http://www.fsf.org/

    ISBN 1-882114-26-4
    ISBN 1-57831-000-8
    Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies. Permission is granted to copy and distribute modified versions of this manual under the conditions for verbatim copying, provided that the entire resulting derived work is distributed under the terms of a permission notice identical to this one. Permission is granted to copy and distribute translations of this manual into another language, under the above conditions for modified versions, except that this permission notice may be stated in a translation approved by the Foundation.

    Cover art by Amy Wells Wood.

    To Miriam, for making me complete.

    To Chana, for the joy you bring us.

    To Rivka, for the exponential increase.

    To Nachum, for the added dimension.

    はじめに

    このマニュアルではawk言語そのものについてと、その効果的な使 い方を教えるものである。catlsのような基本的なシステムコ マンド(1)や、入出力リ ダイレクトやパイプのような基本的なシェルの機能ついて慣れ親しんでいたほう がよい。

    awk言語の処理系は多くの異なる環境において使用可能である。この マニュアルでは、一般にawk言語全般についての説明を行い、同様に gawk(which stands for "GNU Awk")と呼ばれるある特定のawkの 実装についての説明を行う。gawkは多くのUNIXシステム、-- 下は80386 搭載のPCベースのコンピュータから、上はCrayのような大きなシステムにいたる まで -- で稼動している。gawkはまたMS-DOSやOS/2が動作するPCやAtari、 Amigaなどのマイクロコンピュータ、そしてVMSにも移植されている。

    awkgawkの歴史

    awkの名前はその開発者達の名前、Alfred V. Aho, Peter J. Weinberger そして Brian W. Kernighanから来ているものである。awk のオリジナルバージョンは1977年にAT&Tのベル研究所で開発された。1985年には ユーザー定義関数、複数の入力ストリーム、動的正規表現の導入によってより強 力なプログラミング言語となったバージョンが開発された。この新しいバージョ ンは一般的には UNIX System V Release 3.1で使えるようになった。System V Release 4での新 awk では幾つかの新しい機能追加と、言語の"暗い隅"をきれ いにする作業が行われた。POSIXのコマンド言語およびユーティリティの標準は gawkのデザイナーとオリジナルを開発したベル研究所のawk開発者 の両方からのフィードバックが反映されている。

    GNUでのインプリメンテーション、gawkは1986年に Paul Rubin とJay Fenlason、そして Richard Stallmanからのアドバイスの元に開発された。John Woodsはコードの一部分を寄付した。1988年と89年にDavid Truemanは Arnold Robbinsの助けを受けつつ gawkに新しい awkとの互換性を持たせ るための作業をおこなった。現在の開発の主たる点はバグの修正、パフォーマン スの向上、標準に対する準拠であり、そして随時新しい機能の追加を行っている。

    The GNU Project and This Book

    Free Software Foundation (FSF)は非営利団体であり、再配布可能なソフトウェ アの配布を行っている。FSFは、Emacsというエディタの作者であるRichard M. Stallmanによって設立された。GNU Emacsは今日使われている種々のEmacsの中で 最も広く使われているものである。

    GNUプロジェクトはFree Software Foundationによって作業が行われている完全 な、自由に配布することのできるPOSIXコンパチブルなコンピューティング環境 の作成を目指したものである(GNUは"GNU's not Unix"、GNUはUNIXではない。 を表している)。FSFは"GNU General Public License-- GNU一般公有許諾 --" (またはGPL)を使って、そのソフトウェアのソースコードが常にエンドユーザー にとって入手可能な状態にあることを保証している。GPLのコピーはこのマニ ュアルにも含まれている(セクション GNU GENERAL PUBLIC LICENSEを参照)。 GPLはCで書かれたgawkのソースコードに適用されている。

    シェル、エディター(Emacs)、高度な移植性を備えたC、C++、Objective-C コンパイラー、シンボリックデバッガー、その他(gawkのような) 大小たくさんのユーティリティがすでに完成しており、自由に入手できる。 (1997年初頭に)ここで書いたように、GNUオペレーティングシステムの カーネル(HURD)は既にリリースされている。しかし、これはまだ 開発の初期段階にとどまっている。

    GNUオペレーティングシステムの開発がさらに進むまでは、 自由に配布することができ、80386、DEC alpha、 Sun SPARCなどで動作する UNIXに似たオペレーティングシステムであるLinuxを使うのがよいだろう。 Linuxに関しては多くの書籍があり、その中の 一つにMatt Welshによる自由に 入手できる(freely availabke)な Linux Installation and Getting Startedがある。 コンピュータストアやCD-ROMが添付されたLinuxに関する書籍を通じ、多くの Linux配布が入手可能になっている。 (二つの自由に入手可能なUnixライクな80386等向けのオペレーティングシステム、 NetBSDとFreeBSDがある。これらは両方とも4.4-Lite Berkeley Software Distributionに基づいたものであり、それら用のawkとしてgawk の最新バージョンが使用されている)。

    今あなたが読んでいるこのマニュアルはフリーである。 ここにある情報や、 このドキュメントの元となったgawkに付随する機械読み取り可能な ソースコードは誰もが自由に入手できるものであり、 そして誰もがこのマニュアルを好きなだけコピーすることができる (コピーに関しての許可に関してはCopyrightページをチェックして欲しい)。

    もしあなたがこのマニュアルに対してお金を払ったのなら、それはこの マニュアルをきれいに印刷し、綴じるための費用であり、そして出版社が 作成するのにかかった費用である。我々はこの費用を手頃なものに する努力をしている。大部分の人達は、330ページを越える(2) コピーしたテキスト がルースリーフのバインダに綴じられているよりも、きちんと製本された本を望 むだろう(ここではコピーにかかる手間や時間については言及しない)。同じこと が、機械読み取り可能なソースからこのマニュアルを生成することにもい える。頒布価格はレーザープリンターで印刷するためのコストをほんの少し上回 るものである。

    このマニュアルそれ自身は以前からあったいくつかの版を通しての結果で ある。私は1988年の秋に、Diane Close, Paul Rubin, Richard Stallmanによる The GAWK Manualを元に作業を始めた。それは90ページほどのものであり、 オリジナルの "古い"バージョンのawkに関する説明がほとんどなかっ た。かなりの修正の後にリリースされたバージョンは1989年10月の The G AWK Manualの Edition 0.11 Betaである。このマニュアルは第0.13版のために さらに修正が行われた。David Trueman, Pat Rankin, Michal Jaegermannはこの マニュアルの第0.13版のためにセクションを提供した。この版は1992の始めに書 籍として出版された。それから幾つかの細かな修正があって1992年の11月に第0. 14版となり、これは1993年の1月にFSFから出版され、さらに第0.16版が1993年の 8月に出版された。

    Effective AWK Programmingの第一版はThe GAWK Manualに多くの項目を追加す ることによって作成された。FSFと私(原著者)は私がprimary authorであるこ とを認めている。私はより詳しく述べられたタイトルが必要であると感じている。

    Effective AWK Programmingの開発は間違いなく続けられるだろう。その電子バージョ ンはFSFからのgawkの配布パッケージに付随している。もしこの マニュアルに関してエラーを見つけたら、それを知らせて欲しい セクション 問題やバグの報告を参照。 問題に関する情報は電子的にリポートするか、 FSF気付で私(原著者)あてに手紙を書いて欲しい。 訳注:日本語版に関しては、訳者まで。

    Acknowledgements

    ここでRichard M. Stallmanと、彼のより良き世界へのビジョン、 そしてFSFの設立と、GNUプロジェクトを開始した彼の勇気を認めたい。

    The GAWK Manualの初期のドラフトでは、以下のような謝辞があった。

    このマニュアルの作成にあたって、多くの人々の協力があった。Jay Fenlasonは 多くのアイデアと、サンプルプログラムを寄付してくれた。Richard Mlynarik と Robert Chassellはこのマニュアルの草稿について有用な助言をくれた。

    UC San DiegoのChemistry DepartmentのJohn W. Pierceによる A Supplemental Document for awkという論文は awkの実装とこのマニュアルの両方に関連した幾つかの 問題点を指摘しており、我々にとって有益であった。

    以下の人々は、The GAWK Manualの0.13版について有用なコメントを 寄せてくれた。 Rick Adams, Michael Brennan, Rich Burridge, Diane Close, Christopher ("Topher") Eliot, Michael Lijewski, Pat Rankin, Miriam Robbins, and Michal Jaegermann.

    以下の人々はEffective AWK Programmingの1.0版について有用なコメントを 寄せてくれた。 Karl Berry, Michael Brennan, Darrel Hankerson, Michal Jaegermann, Michael Lijewski, and Miriam Robbins. Pat Rankin, Michal Jaegermann, Darrel Hankerson and Scott Deifik

    Robert J. ChassellはTexinfoの使用についての助言を してくれた。彼はこのマニュアルのタイトルを How To Gawk Politelyというタイトルにしないよう 助言をしてくれた。Karl Berryは TexinfoのTeX{}部分に際立った助力をしてくれた。

    David Truemanは特別に賞賛を受けるに値する。 彼はgawkを性能がよく、バグがない ものとする不屈な仕事を行った。彼はもうgawkに関係していないが、 このプロジェクトで彼とともに作業したことは非常に喜ばしいことであった。

    Scott Deifik, Darrel Hankerson, Kai Uwe Rommel, Pat Rankin, Michal Jaegermann (順不同) は長期間にわたりgawkの "crack portability team"のメンバーである。彼らの作業と助けを抜きにして gawkは今日あるような優秀なプログラムにはならなかっただろう。 このチームの素晴らしい面々と作業を行うことは喜ばしいことであった。

    Jeffrey Friedlはgawk3.0の正規表現に関する問題を解決するのに 非常に重要な手助けをしてくれた。

    gawkのテストとデバッグの間、貴重な助言を寄せ、言語に関する幾つか の疑問点を明確にするための助けをしてくれたBell研究所のBrian Kernighanに 感謝する。彼の助けなくして我々はgawkやこのドキュメントの作業にお いて良い結果は得られなかっただろう。

    Seattleの Marsharl Hartholz と Elaine Hartholz、DetroitのDr. Bert Scheiber と Rita Schreiberに感謝する。彼らは、彼らの家庭での安息の時間の多く を費やし、このマニュアルとgawkの向上に協力してくれた。SSCの Phil Hughesは私が家を離れている間、彼のラップトップLinuxシステムを私に貸 してくれたので、私は多くの仕事をすることができた。

    最後に、このプロジェクトを通して我慢し続け、原稿の校正を行い、コンピュー タと私とを共有した私の素晴らしき妻Miriamに、私を育て教育してくれた両親と その愛に感謝する。そして私の進むべき道を示し、導き給うた神に感謝する。

    Arnold Robbins
    Atlanta, Georgia
    February, 1997


    移動先 先頭, 前, , 末尾 セクション, 目次.