みなさん こんにちわ
組み込み変数の話の続きです。
世の中には実に多用なデータ形式があります。世のアプリケーションソフトには融通がきかないものも多いのですが、awkなら実にあっさり対応できます。
普通、データベースにのせるようなデータはレコードとフィールドという単位から構成されます。レコードにはレコードの区切り(レコードセパレータ)、フィールドにはフィールドの区切り(フィールドセパレータ)がそれぞれあってデータを構造化しています。
例えば次のようなデータでは1行が1レコード、さらに1レコードが氏名、性別、年齢の3つのフィールドから成ります。レコードセパレータは改行、フィールドセパレータはカンマです。
氏名,性別,年齢 モリタ ケンサク,M,57 ワダ タカオ,M,56 モリタ コウイチ,M,53 カノウ テンメイ,M,34 ハシダ スガコ,F,36 キシベ シロウ,M,65 ミヤザワ リエ,F,64
awkのデフォルトではレコードセパレータは改行、フィールドセパレータは1文字以上の空白文字(半角空白かタブ)です。したがってデフォルトのままではこのデータを上手く処理できません。
そこで、次の一文を加えます。
BEGIN{FS=","}
BEGINはいちばん最初に実行されるパターン、= は代入ですから、「いちばんはじめに組み込み変数FSに , を代入せよ」という意味です。組み込み変数FSはフィールドセパレータがセットされる変数ですから、このように明示的に指定することにより、自分の指定したフィールドセパレータが使えるようになります。
手術台帳のデータはフィールドセパレータがタブ1つです。この場合
BEGIN{FS="\t"}
と指定することで、タブ1個をフィールドセパレータにできます。デフォルトのままだと、連続した複数個のタブは1つのセパレータと見做されるので上手く扱えないのです。
初出 NIFTY-Serve「みんみんネット」1996/09/21 (Sat) 14:17:54