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の方がスマートな気もします(個人的に@で配列指定するのがキモいですが…)。