作者: mori
日時: 2008/2/29(11:07)
こんにちは。

こういうことをしたいのかな、と思い、以下のようにしました。
メインのループで配列変数にデータを取り込んで、END{} で
変数内容を書き出しています。

bash-3.2$ cat book1.awk
BEGIN{
    FS=",";
}
{
    titles[$1] = 1;
    if ( $2 == "著者" ) { author[$1] = $3; }
    if ( $2 == "訳者" ) { translator[$1] = $3; }
    if ( $2 == "出版社" ) { publisher[$1] = $3; }
    if ( $2 == "出版年" ) { year[$1] = $3; }
}
END{
    for ( title in titles ){
        printf( "%s,%s,%s,%s,%s,\n",
            title,
            author[title],
            translator[title],
            publisher[title],
            year[title] );
    }
}
bash-3.2$ awk -f book1.awk < book_list.txt
夢みる宝石,シオドア・スタージョン,,ハヤカワ文庫,1979,
創世記機械,,山高昭 訳,創元推理文庫,1981,
火星の黄金仮面,O.A.クライン,,創元推理文庫,1978,
永遠へのパスポート,J.G.バラード,永井淳 訳,創元推理文庫,1970,
虚空の眼,フィリップ・K・ディック,大瀧啓裕 訳,サンリオSF,,
ビアドのローマの女たち,A.バージェス,,サンリオSF,1980,
bash-3.2$