みなさん こんにちわ
組み込み変数の話の続きです。
世の中には実に多用なデータ形式があります。世のアプリケーションソフト
には融通がきかないものも多いのですが、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