AWKのフィールドの区切を変更する

最初のほうの例で、「心とろかすような  マサの事件簿」という書名の元デー タが半角の空白で副題が区切られていて、処理に失敗したのを覚えていますか ? あのときは、このような区切は全角の空白を使うことにすると、 データファイルの作り方を制限しました。しかし、人の目には空白文字の種類 の違いは非常に分りにくいので、良い解決方法ではありません。

そこで区切文字のほうを半角の空白から他の文字へ変えてしまいましょう。こ こではカンマ  ,  に変更してみます。まず、データファイルの区切を , に変 更したものを作り、そのファイル名をmiyabe.csvとします。

AWKプログラムのほうは、オプション-Fの直後に変更したい区切文字 ,  を書きます。

    % gawk -F , '{ print $1, $3; }' miyabe.csv
    書名 発行
    火車 98/02/01
    かまいたち 96/09/01
    蒲生邸事件 96/10/10
    堪忍箱 96/10/30
    クロスファイア[上・下] 98/10/30
    幻色江戸ごよみ 98/09/01
    心とろかすような マサの事件簿 97/11/28
    コットン 4 90/03/01
    今夜は眠れない 98/11/18
        (省略)
    %

オプション-Fを使わずに、BEGINを使って区切文字( Field Separatorと呼びます)を表わす組込変数FSに変更したい文字を代入して おいても構いません。

    % gawk 'BEGIN { FS=","; } { print $1, $3; }' miyabe.csv

こちらの使い方はスクリプト で良く使われます。

ところで、このように一つのレコードの要素を一行に書き、各要素をカンマ (,)で区切って保存する形式を CSV (comma-separated value) と言って良く使われています。市販の表 計算ソフトなどでもデータをこの形式で保存できることが多いそうです [*]

OGURISU Osamu
2004-01-15