AT's Blog

プログラミング、回路設計、ギター、音楽、読書とか

PerlワンライナーでCSVファイルのカラムを入れ替える

会社の先輩から、CSVファイルのカラムを入れ替えるのようなスクリプトを書けるか、 と聞かれたので、さくっとPerlワンライナーで書いてみました。

>echo `seq -s, 0 10`                                                     
0,1,2,3,4,5,6,7,8,9,10,
>echo `seq -s, 0 10` | perl -F, -alne '@F[3,5]=@F[5,3];$"=",";print "@F,"'
0,1,2,5,4,3,6,7,8,9,10,

Perlでの配列の入れ替えは、

@F[3,5] = @F[5,3];

のように書けます。ちなみにPythonだったら、

F[3], F[5] = F[5], F[3]

ですね。

配列をprintするときのセパレータは、$“変数で指定します。

$" = ",";

こうして見ると、Perlの方がスマートな気もします(個人的に@で配列指定するのがキモいですが…)。