68user's page 掲示板

Prev< No. 3936> Next  [最新発言に戻る] [過去ログ一覧]
No. 3936 # 一人 2004/08/23 (月) 21:39:37
以下のカンマで区切られたデータをフィールド1をキーにして、フィールド3を
1行に編集しようとしたのですが、処理が終了してくれません。
無限ループの状態になってしまいます。

上手くファイルの終了を判断していません。
ファイルの終わり(EOF)を判断するにはどうしたらできますか。


--データ--------------
A001,商品番号,0001
A001,商品番号,0002
A001,商品番号,0003
A002,商品番号,0001
    :
    :
Annn,商品番号,0001
Annn,商品番号.0002

--結果--------------------
A001,0001,0002,0003
A002,0001
    :
    :
Annn,0001,0002

----------------------------------
#!/bin/sh
#

SORT_FILE="/tmp/sort_csv.log"
OUT_FILE="/tmp/kekka.log"

rm ${OUT_FILE}* > /dev/null 2>&1

echo "*** start ***"

awk -v OUT=${OUT_FILE} -F"," '
BEGIN {
                count = 0+0 ;
                output=sprintf("%s",OUT) ;
        }
function edit_proc() {
        cnt = 0+1 ;
        dumy = $1 ;
        printf("%s",$1) >> output ;

        while( NF>0 ) {
                if (dumy != $1) {
                        printf("\n") >> output ;
                        dumy = $1 ;
                        printf("%s",$1) >> output ;
                        cnt++ ;
                }
                printf(",%s",$3) >> output ;
                getline ;
        }
        printf("\n") >> output ;
        return cnt ;
}
{
        count=edit_proc() ;
}
END {
        close(output) ;
        printf("syori count [ %d ] ken\n",count) ;
}' ${SORT_FILE}

echo "*** end ***"

Prev< No. 3936> Next  [最新発言に戻る] [過去ログ一覧]