作者: davi
日時: 2008/2/29(22:39)
Yささん  <  こん??は でび です

On Fri, 29 Feb 2008 20:16:22 +0900 (JST)
saw@...-nokuchi2pho.ne.jp (Yさ) wrote:

> でびさん版をなるべく活かすとしたら

ありがとうございます。
いろんなアプローチが学べるのがTSの良いところですね。

先にbook2csv.awk [改]だけを読んだので、

>     for(i=2; i<NF; i+=3){

で3を足しまくっているのが何だかわからず、
印刷して色ペン持って15分考え込みました。

>  gawk -f j.awk book_list.txt | gawk -f book2csv.awk

前処理で、ガッ!とまとめるんですね。

処理を途中で分ければスコープの切り分けも
自ずとできるということには全く思い至りませんでした。

> prev!=$1 {

のように、否定の条件式でいきなり変数宣言して
その瞬間に有効となるのって、改めて考えると、
なんだかすごいですよね。

実は、prevって予約語があるのかと、ググってしまいました。

printfで$0を出しているのは、改行が付かないという性質を
使って次行をドンドン追記している、というテクと理解して
良いですか?

暗黙に次行へ処理が移って、prev!=$1が成立するまで
ループが回っているように読み取ったのですが、
その解釈で合っているのか、ちと自信がありません。

−−−−−−−−−−

ところでawkの場合、1レコードの最長文字数ってメモリ依存
なのでしょうか。

たとえば、全ファイル1レコードにしちゃってから後処理する、
みたいな富豪プログラミングも理論的にはできるのだろーか、
とか気になってみたり。


でび  http://davi.txt-nifty.com/1984/