パソコン・メモメモ備忘録

気の向くままパソコン関係等で気になることを書き記す。時々更新!

sort コマンド

CSV ファイルをお手軽にソートしようと少し考えてみた。Excel で読み込んで並べ替えるのが簡単ではある(インストールされていれば)。ただ、この CSV ファイル数値データなのだが、10万行以上あって、Excel2003 以前では読み込めない。Excel2007 ならなんとか。
で、フリーソフトのみでやろうと、Cygwin(Linux) の sort コマンドを試してみた。しかし、昔から(10年くらい)sort コマンドがうまく使いこなせず、いつも、awk で、ソートキーを行の先頭に持ってきて、sort して、出力から awk でキーの部分を消す、という無駄な努力をしていた。今回、試行錯誤の上、やっと思い通りに使えるようになった。やったっ。

これまで使えていなかったのは、ソートキーとなるフィールドの設定。今回うまくできたパターンは、

sort -t , -k 3,3n -k 4,4n ....

みたいな指定。-t でカンマ区切りで、後は、キーの指定。n をつけておくことで、辞書順ではなくて数値順になる。

ちなみに、コマンドプロンプトにも sort コマンドはあるのだが、あまり機能は多く無くて今ひとつ。少なくとも今回の目的には使えなかった。後、WSH(Windows Scripting Host)で JScript でも書いてみたのだが、CSV の読み込みだけで相当処理時間がかかってしまったので断念。きっとエキスパートな人には、もっと効率のいい方法を知っているのだとは思うが。