作者: Bruce.
日時: 2008/3/01(00:16)
Bruce.です。

davi さんは書きました:

>> function put_record() {
> 
> に切り出したのは、$1で条件分岐して
> 
>>     put_record()
> 
> を2回呼ぶからなのか、そこだけスコープを発生させたいため
> なのか、どちらの理由ですか?

あー、それは prev!=$1 のときと、最後までファイルを読み取ったときの両方で
レコードの吐き出しをしなければいけないので、同じ処理を別のところに二回書
くのを避けただけです。
#よだん: prev == previous で、前の行の$1を保持しているよという意味をこめ
てます。
#previous xxxx なものを保持する変数の名前を prev とするのは割りとよくあ
ります。


まったく同じコードを複数個所に書き散らすのはバグの元ですから、そうしなけ
ればならない
という理由がないのであれば避けるべきことです。


>> なにもawkでやらんでもという気が
> 
> awk的には不得手なデータ構造なんでしょうか?

まあ得意とはいえないでしょうね。

たとえば著者名がアルファベットで記述されていて、その名前にカンマが含まれ
ていたりすると
とっても楽しいことになります。
#回避できるっちゃーできますけど。

あとは、でびさんご推察の通り「構造体の配列」とか「配列の配列」みたいなのが
awkはできませんからして。

ところで

>bash-3.2$ awk -f book1.awk < book_list.txt

なぜわざわざリダイレクトしてデータを喰わせているのでしょうか? >moriさん

-- 
木村浩一/KIMURA Koichi
 I thought what I'd do was, I'd pretend I was one of those deaf-mutes or
shoud I?
 mail kbk at kt.rim.or.jp
 web  www.kt.rim.or.jp/~kbk/zakkicho/index.html