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

Introduction

もしあなたが多くのコンピュータユーザと同じように、さまざまなテキストファイル をある特定のパターンが見付かったところで変更することをしなければならないとか、 特定の行からデータを取り出してそのほかの部分は捨ててしまうといったことを繰り 返し行なわなければならないのであれば、 CやPascalのようなプログラミング言語で そのようなプログラムを書くのは手間も時間もかかる。それはawkを 使えば簡単にできるだろう。

awkユーティリティはほんの2、3行で単純なデータの整形を簡単に 行なえるような特殊なプログラミング言語である。

GNU の実装による awk は、gawk と呼ばれ、 System V Release 4 version の awk に対して完全上位コンパチブルである。 gawk はまた、POSIX の定めた awk 言語の規定に対しても上位互換 である。これは、きちんと書かれたawk のプログラムは gawkでも動作する。ということである。したがって、このマニュアルでは gawk と他の awkとの実装上の違いを述べるようなことは しない。

awkを使ってできることはたとえば、

などがある。

Using This Book

awkという語は特定のプログラムを示していると同時にあなたが実行しよ うとしているプログラムの言語を示している。気をつける必要がある場合には、 プログラムを"awkユーティリティ"と呼び、もう一方を"awk言 語"と呼ぶ。gawkという語はGNUプロジェクトが開発したawkを表 している。このマニュアルの目的はawk言語と、awkユーテ ィリティの実行の仕方の両方を説明することである。

このマニュアルの主な目的はPOSIXの標準で定められているawkの 機能を説明することである。それはある特定の実装やgawkを説明してい るときに行っている。その説明では同様に、gawkと他のawkの実 装との重要な差違を説明することを試みる。さらに、POSIX標準のawkに はないようなgawkの機能を説明する。

このマニュアルはチュートリアルとリファレンスの両方の役目を果たすという 難しい立場のものであるが、もし、あなたが初心者ならば難しすぎると感じるような記 述の部分は好きに読み飛ばしてかまわない。そういった部分はエキスパートユーザー と、このマニュアルのオンラインInfo バージョンで参照されるためのものだからだ。

awk プログラムという単語はあなたが プログラミング言語awkを使って作成したプログラムを指す。

awk言語の感じを知るための便利な"一行野郎"は (セクション 便利な一行野郎を参照)にある。

多くのawkプログラムのサンプルがある (セクション awkの関数ライブラリを参照。また、 セクション 実用的な awk プログラムを参照).

awk言語全体はセクション gawk に関するまとめを参照にクイックリ ファレンスとしてまとめられている。もし記憶に曖昧なところがあって、ある特 定の機能を確かめたいときには参照して欲しい。

見慣れないような単語があった場合、用語集(セクション 用語集を参照)を参照してみて 欲しい。

ほとんどの例で、完全なawkプログラムが挙げられるが、 一部の高レベルのセクションでは、説明している事柄の概念を説明する awkプログラムの一部分だけが挙げられている。

このマニュアル全体はawkを知らない人のためのものであるが、 特に、POSIXのawkに関する記述、 セクション awkの関数ライブラリを参照.や セクション 実用的な awk プログラムを参照. にあるサンプルプログラムは、 awkのエキスパートに対しても興味深いものであるはずだ。

Dark Corners

Who opened that window shade?!?
Count Dracula

POSIXの標準(とThe Gawk Manual)までは、awkの 多くの機能はほとんどドキュメント化されていないか、あるいは あっても満足なものではなかった。このような機能の記述 (しばしば"dark corners"と呼ばれる)は、このマニュアルでは "(d.c.)"をつけて説明されている。 これらの機能は"dark corner"が先頭にある索引項目でも確認できる。

Typographical Conventions

このマニュアルはGNUのドキュメント整形言語であるTexinfoで記述されている。 単一のTexinfoソースは、印刷ドキュメントとオンラインドキュメントの両方を 作成するのに使われる。 このため、あなたがこれまで読んだ他の本とは多少 typographical conventionsが違っている。

サンプルの中で、あなたが実際にシェルのコマンドラインから 入力する行は、シェルの一次プロンプトや二次プロンプト (`$'`>')を行の先頭に置いている。 コマンドの出力はその前に"-|"をつける。 大体はコマンドの標準出力を表わしている。 エラーメッセージや、その他のコマンドの標準エラー出力に 出力されるものはその前に"error-->"が付いている。 例を挙げると、

$ echo hi on stdout
-| hi on stdout
$ echo hello on stderr 1>&2
error--> hello on stderr

テキスト中では、コマンド名はthis fontのようなフォントで出力されていて、 コードセグメント全体は`like this'のように同じフォントで、さらにクォ ートされる。何かを強調したときにはlike thisのように、特に強調 したい箇所はlike thisのようにされている。新しい単語が登場したと き、通常はそれが定義され、このセンテンスで前に"定義"がでてきたの と同じフォントで現れる。ファイル名は`/path/to/ourfile'のように表わ される。

キーボードからタイプするキャラクタはlike thisのように見える。特に、 それが"コントロールキャラクタ"と呼ばれる場合には。コントロールキャラク タとは、CONTROLキーと別のキーを一度に押してタイプするものである。 例えば、Control-dは、最初にCONTROLを押し、押したままd キーを押す。そして、両方のキーを離すという手順をとる。

例で使用するデータファイル

このマニュアルでの例の多くは、二つのサンプルデータファイルから入力を 取る。一番目は `BBS-list'と呼ばれるものであり、BBSのリストとその情報 が記述されているファイル。二番目のデータファイルは`inventory-shipped' と呼ばれるもので月毎の船積みの量が記述されているファイルである。 これらのファイルの各行には、一つのレコードだけが置かれている。

`BBS-list'中の各レコードは、BBSの名称とその電話番号、ボーレート、そし て運営時間を表すコードから構成される。最終カラムの `A'はBBSが終日運 営されていることを示し、同様に `B'は BBSの運営が夜間と、週末のみである ことを、 `C'は週末のみの運営である事を示す。

aardvark     555-5553     1200/300          B
alpo-net     555-3412     2400/1200/300     A
barfly       555-7685     1200/300          A
bites        555-1675     2400/1200/300     A
camelot      555-0542     300               C
core         555-2912     1200/300          C
fooey        555-1234     2400/1200/300     B
foot         555-6699     1200/300          B
macfoo       555-6480     1200/300          A
sdace        555-3430     2400/1200/300     A
sabafoo      555-2127     1200/300          C

二番目のデータファイルは、`inventory-shipped'と呼ばれるもので、 年間の積込量を記述したものである。 各レコードは、月と、緑色のかごの積込量、赤い箱の積込量、オレンジ色の バッグの積込量、そして青い包みの積込量、から構成されている。 ファイルには16のエントリがあり、ある年の12ヶ月と、その翌年の4ヶ月分の データが記述されている。

Jan  13  25  15 115
Feb  15  32  24 226
Mar  15  24  34 228
Apr  31  52  63 420
May  16  34  29 208
Jun  31  42  75 492
Jul  24  34  67 436
Aug  15  34  47 316
Sep  13  55  37 277
Oct  29  54  68 525
Nov  20  87  82 577
Dec  17  35  61 401

Jan  21  36  64 620
Feb  26  58  80 652
Mar  24  75  70 495
Apr  21  70  74 514

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