Effective AWK Programming

(1)

これらのコマンドはPOSIXに準拠したシステムで使用可能であ る。他のオペレーティングシステムを使っているのなら、あなたはさらに 入出力のリダイレクトやパイプなどの概念に親しむ必要がある。

(2)

訳注: 原書の場合

(3)

これらのシステムでは、しばしばgawkがそのシス テムでのawkとして用いられている。

(4)

`#!'構文はLinuxやバークレイUNIX、System V Release4と、一部のRelease 3から派生したUNIXシステムで使用できる

(5)

`#!'で始まる行はインタープリタのフルパス名とプログラムを 実行するための引数リストのリストがある。 最初の引数は実行するためのものであり、その他はオプションのインタープリタ に渡す初期コマンドライン引数である。オペレーティングシステムは、インター プリタを与えられたawkプログラムのフルパス名から起動し、引数リスト の残りをawkに対するオプション指定か、データファイル、もしくはその 両方にする。

(6)

POSIX awkでは、改行はフィール ドを分ける空白とはみなされない。

(7)

sedユーティリティは"ストリームエディタ"である。その動作は、やは りPOSIXの標準で定義されている。

(8)

awk内部ではすべての数値は倍精度の浮動小数点数であ る。もしこの言葉の意味が判らなくても気にすることはない。

(9)

POSIX の awkでは、改行は空白とみなされない。

(10)

一部の初期のUNIX上のawkでは、処理すべきデータファイルがあったとしても FILENAME"-"に初期化していた。この振る舞いは誤ったものであり、 こうなることを期待してプログラムを作成するべきではない。

(11)

コンピュータが作り出す乱数は本当の乱数ではない。 これらは"擬似乱数"として知られている。これは作られた数値群は ランダムのように見えるけれども、何度でも同じ順序の乱数系列を作り出すことが できるのだ。

(12)

この結果は故意ではない。

(13)

February 1997現在、最終的な承認状態にあり、 1997年中に出版されることが期待されている。

(14)

標準出力がターミナルデバイスに接続されていれば、そのプログラムは 対話的なものである。

(15)

閏秒のために60になる可能性があるので、60までとなっている。

(16)

これは ANSI の標準CではCバージョンのstrftimeのその ような場合の動作が定義されていないからで、gawkが使うであろうそのシ ステムでのstrftimeそれならば同様の結果となる。典型的なのは変換指定 文字が戻り値の文字列にないということだろう。

(17)

もしこの事がわからなくても気にすることはない。 これらはプログラムの"国際化"(internationalize)を容易にするためのも のである。

(18)

あなたの使っているgawk`/usr/local/share/awk' 以外のディレクトリを使っているかもしれない。これはgawkがどのよう にビルドされたり、インストールされたかに依存していて、実際のディレクト リはgawkがコンフィギュレーションされたときに生成された `$(datadir)'の値になる。しかし、これを気にする必要はない。

(19)

一部のawk処理系では、関数本体でnextを実行することを 許していない。もしそのような処理系を使っているのなら、 それに対処する必要がある。

(20)

ASCIIは多くの国で128から255までの値を 各国固有のキャラクタの定義に使っている。もし使用しているシステムが これらの拡張を使っているのならば、単純にループを0から255にすれば良い。

(21)

これはPOSIXシステムの 開始時間であり、他のシステムでは 異なったものかもしれない。

(22)

セクション Noting Data File Boundariesを参照. にあるコードを確かめるように。なぜwcでは endfileの中でFNRの値を使わずに、 linesという変数を使わねばらないのだろうか?

(23)

古い、非POSIXシステムでは、tr はしばしばこのリストを囲むブラケットを必要とせず、したがってクォートの必 要もなかった。これは仕様である。

(24)

このプログラムは、gawkに文字列中の個々のキャラクタを配 列の要素に分割するという能力が追加される前に書かれた。この能力はプログラ ムをどのように単純化できるだろうか?

(25)

"Real world"とは、"実際 に何かをするために使われるプログラム"と定義される。

(26)

幾つかの、非常に古い awkでは、ファイルが存在するけれどもそれが空であるときに `getline junk < t' という検査が無限ループに 落ち込む可能性がある。Caveat Emptor(買手注意?)。

(27)

`/usr/local/share/awk'以外のパスが使われる 場合もある。これはgawkがどのようにビルドされ、インストールされたかに よる。

(28)

POSIX awkでは、改行はフィールドを分割しない