PerlでCSVファイルをソートする方法について、サンプルプログラムを使って説明します。
ASHのホームページで公開しているスクリプトの著作権はASHにあります。
スクリプトの利用や改造は、非商用、商用にかかわらず自由です。
ただし、利用される場合は、ASHへのリンク、ASHに対するカンパ、ASHに対する仕事の依頼などをお願いします。
ASHではスクリプトの作成も行っています。
Perlのsort関数を使って、CSVファイルのソートを行います。
Perlのsort関数は、ソートサブルーチンを指定できますので、この機能を使います。
CSVデータの任意の項目をソートキーとしてソートします。
キーの数は、無制限ですので、2次キーや3次キーを指定することもできます。
ソート方法は、各キー毎に、昇順ソートと降順ソートができます。
また、文字列ソートと数字ソートが可能です。
1,5,10をソートした場合、文字列ソートでは、1,10,5となりますが、数字ソートでは、1,5,10となります。
オプションの指定は、スクリプトの先頭で変数に代入することで指定します。
CSVファイル名とソートキーの指定を行います。
ソート結果は、標準出力にCSV形式で出力します。
| sort_csv.pl |
|---|
#!/usr/local/bin/perl
#
# csvデータのソート
#
{
# パラメータの設定
$file = 'data.csv'; # csvファイル名
$key_num = 2; # キーの数
$key_idx[0] = 0; # キーのカラム番号
$key_dir[0] = 1; # 0:昇順 1:降順
$key_typ[0] = 0; # 0:文字 1:数字
$key_idx[1] = 1; # キーのカラム番号
$key_dir[1] = 0; # 0:昇順 1:降順
$key_typ[1] = 0; # 0:文字 1:数字
# csvファイルのオープン
unless (open (INF, "< $file")) {
print "Read open error ($file).\n";
exit (1);
}
# CSVファイルの読み込み
@tbl = ();
for ($line = 0; |