• twitter
  • facebook
文学・歴史資料のデジタル加工入門

awkの使い方【文学・歴史資料のデジタル加工入門8】 (木越 治)

●awkの変数

このスクリプトのうち、最初のBEGINで始まる行が、入力ファイルと出力ファイルの形式を教えている箇所になる。ここに出る、「FS」「ORS」というのは、awkの「変数」であり、以下のような意味がある。

「FS」は「Field Separators」の略で、データのフィールドを区切る文字を指定する。なにも指定しなければ(=デフォルトでは)半角の空白であるが、ここでは、「,」であるから、「FS=”,”」としてある。

「ORS」は「Output Record Separators」、すなわち、出力する1つのデータの区切りである。デフォルトは改行マーク(\n)なので、本来は不要であるが、大切な変数なので、たいていは、明示的に指定するようにしている。

なお、このスクリプトでは使用していないが、「OFS」及び「RS」という変数もある。

「OFS」は「Output Field Separators」、すなわち、書き出すデータのフィールド区切り文字を指定するもので、デフォルトでは、半角空白である。このスクリプトでは特に必要ないので指定してはいないが、興味のある人は、いろいろな文字を指定して試してみるとそれに応じて出力結果が変化していくのがわかるはずである。

「RS」は「Record Separators」、すなわち、入力データの区切り文字である。デフォルトは「\n」である。たいていのデータファイルは「\n」が区切りになっているから、明示的に指定する必要性がある機会はそんなにはない。

 こういう変数の解説以上に、初心者がとまどうのは、区切り文字「,」を「””」でくくって指定してやらないといけないこととか、「FS」や「ORS」等を並べていくときは「;」で区切る、あるいは、「BEGIN」は大文字で書き、最初を「{」とし、終りに「}」を付す、というような約束事である。こういうのは、とてもプログラムぽくみえるし、こういうのを苦もなく使っていると、とてもプログラマらしくみえる(気がする)。が、こういう約束事は、なぜそうなのかと考えてもあまり意味はない。文章における句読点の使用法に近いものと理解し、実際のプログラムやスクリプトを真似していればいいのである。

さて、これで準備が整った。