awkの使い方2ーcsvファイルからの展開【文学・歴史資料のデジタル加工入門9】 (木越 治)
●印刷用のawkスクリプト
メッセージ部分は、awkスクリプトにprint コマンドを使って書き込んでしまうつもりである。
このためのスクリプト(「kaihi.awk」)は以下のとおりになる。
======================================================
BEGIN { FS=”,” ; OFS=”\n” ; ORS=”\n” }
{
print $1″ 様”
print “”
print ” 『MS-DOS研究』3号発送案内と会費納入のお願い ”
print “”
print” 前略”
print “”
print” 『MS-DOS研究』3号ができあがりました。前号から印刷を依頼しているGingou(金沢市)から直接会員のもとへ送っていただくようにいたしております。もし、まだ届いていない場合は、事務局までご一報ください。”
print” 例年より刊行が遅れ、会員の皆様にはたいへんご迷惑をおかけいたしました。この場を借りてお詫び申し上げます。”
print” 会費納入状況を下の欄に印字してありますので、未納年度のある方は、同封の振替用紙によりお支払いくださいますようお願いいたします。”
print”年会費は 1,000円です。”
print” 疑問の点がありましたら、事務局まで、ご連絡ください。”
print “”
print” 2017年2月”
print “”
print” 事務局”
print “”
print “会費納入状況について”
print “名前:”$1
print ” 2016年度:”$4
print ” 2015年度:”$3
print ” 2014年度:”$2
print “”(下記画像参照)
}
======================================================
「BEGIN」の部分に関しては、特にいうことはない。
実行部分では、「print」を、1行改行するごとに何度も実行しているのと、空行のために「””」を適宜挿入していることくらいが目につく程度だろう。なお、このスクリプトでは制御コードがうまく示せないので、下記の画像を参照していただきたいが、最後の行には改行ではなく改ページコードを入れてある。
一太郎では「Ctrl+Y」のコードを挿入することにより改頁してくれる機能がある。そのコードが「2014年度:”$2」の下の行にみえる「CL」のようなコードである。(秀丸の制御コード入力で入れる「Ctrl+Y」とはちがうようだが、そのへんのくわしいことは不明。私は一太郎から秀丸にコピーして利用した。)ただし、印刷の際に、これだけでの分量で1頁に収まるように工夫すれば(ここでは、B5の用紙で印刷することを想定している)、この一行は不要であろう。
とりあえず、これらを、MS-DOS画面で
> gawk -f kaihi.awk kaihi.csv > kaihi.txt
というふうにして「kaihi.txt」というファイルに書き出し、自分の使っているWordや一太郎などのワープロソフトに貼り付けて、上下左右のマージンなどを適宜調節していけばよい。
●教訓
ところで、今回、このスクリプトを利用して、実際の会員約50名に納入依頼を出したわけだが、数日後、ある会員から、「納めているはずの年度が未納になっているが、確認してほしい」というメールが届いた。記録を調べたところたしかに納入記録があった。どうやらcsvデータを作る際に利用したエクセルファイルが一世代前のものであったらしい。すぐに全員の分を見直したところ、連絡をくれた会員の他に、あと二人ほどのデータが未入力であったことがわかったので、すぐに訂正通知を出した。
プログラムをうまく走らせることに気を取られて、肝心の案内すべきデータ自体の見直し・確認を怠る、というあやまりはよくあるが、大切なことは、プログラムをうまく利用することはではなくて、まちがいないデータを提供することにある、というのは、どういう作業の場合にも心得ておくべき原則である。