2017年12月29日金曜日

CSVの列順番を入れ替える

あまプロではCSVファイルを扱う事が有ります。

先日、列の順番を入れ替える案件が有りましたので、あメログ。

test.csv
a,b,c
a,b,c
というCSVを
a,c,b
a,c,b
に並べ替えたいとします。

方法は色々有るんですが、ワンライナーでさくっと変換したい場合は
paste -d, test.csv test.csv | cut -d, -f1,3,5

echo -e "a,b,c\na,b,c" | sed -e "s/^\(.*\),\(.*\),\(.*\)$/\1,\3,\2/g"

echo -e "a,b,c\na,b,c" | awk 'BEGIN{ FS=","; OFS=",";} { print $1, $3, $2}'
ですかね。
他にも色々方法は有るんですが、私はコマンドの短いpasteで処理しました。
実行速度を取るか、メモリ使用量を取るか、コマンドの短さを取るか、好みのコマンドを取るか、プロジェクト毎の決まりに従うか…等々で色々変わりますので、場合に選って使い分けてます。

0 件のコメント:

コメントを投稿

つっこみ