入力CSVファイル:
key,c1,c2,c3......,cn
1,car,phone,cat,.....,kite
2,abc,def,hij,.......,pot
1,yes,no,is,.........,hello
2,hello,yes,no,......,help
出力CSVファイル:
Key,c1,c2,c3,.......,cn
1,caryes,phoneno,catis,.....,kitehello
2,abchello,defyes,hijno,....,pothelp
入力ファイルには1,400万行があります。誰でも効率的な方法を提供するのに役立ちますか?よろしくお願いします。
答え1
どのくらい効率的かはわかりませんが、各ハッシュ値の各要素にmap
文字列接続の割り当てを使用して、匿名配列のハッシュとして同様の操作を実行できます。.=
perl -F, -nle '
$k = shift @F;
map { $h{$k}[$_] .= $F[$_] } 0..$#F
}{
for $k (sort { $a <=> $b } keys %h) {
print join ",", $k, @{ $h{$k} }
}' file
key,c1,c2,c3......,cn
1,caryes,phoneno,catis,..............,kitehello
2,abchello,defyes,hijno,.............,pothelp