・キー(フィールド1)でsort済みのcsvデータ
・同一キーのレコード数の入ったフィールドを、各レコードに追加したい
~例えば、キーaが4レコードあれば、最後尾にレコード数”4”のフィールドを追加する
・windows7のコマンドプロンプトにて、gawkスクリプトを利用しています
入力csvファイル
*** testin.csv
a,123
a,1
a,12
a,23
b,13
b,12
c,23
c,123
c,1
c,1
出力させたいcsvファイル
*** testout.csv
a,123,4
a,1,4
a,12,4
a,23,4
b,13,2
b,12,2
c,23,4
c,123,4
c,1,4
c,1,4
ソースコード
*** test.awk
BEGIN{
FS=OFS=",";
COUNT=1;
table[COUNT]=$0;KIOKU=$1}
{
if (KIOKU!=$1){
i=1;
while(i<=COUNT){print table[i],COUNT;i++;}
COUNT=1;
table[COUNT]=$0;KIOKU=$1;}
else {
COUNT++;
table[COUNT]=$0}
}
END{
if (NR>0)
{i=1;while(i<=COUNT){print table[i],COUNT;i++;}
}
*** test.cmd
gawk -f "test.awk" testin.csv > testout.csv
試したこと
・レコードはいったん配列に格納、キー変化したら格納した配列からレコード吐き出す、という作戦でした。
現状・教えていただきたいこと
・出力ループの書き方等、自信ありません
(テスト繰り替えして、ようやく行きついた感じです)
・実際に動かすと1行目にゴミがでてしまいます。
・出力後、配列をクリアしていませんが、問題ないでしょうか?
初歩的な質問で恐縮です。
よろしくお願いいたします。
*** 実際の testout.csv
,1 <<== ゴミ
a,123,4
a,1,4
a,12,4
a,23,4
b,13,2
b,12,2
c,23,4
c,123,4
c,1,4
c,1,4
回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/02/27 03:58