単純に先頭バイトから始まるデータの内容で並べ替えを行うスクリプトです。固定長のデータを並べ替えるのに適していますが、CSVファイルでもキー項目が1バイト目から始まる項目のみで、長さが一定の場合にも適用できる方法です。
Rubyでは、「sort」メソッドはArrayクラスのインスタンスに対して行うため、入力データは「readlines」メソッドによって、一度に全データを読み込み、「in1_file」にセットしています。あとは「in1_file」を並べ替えながら、「print」メソッドによって、出力しています。
# sort.rb # 内容 : 先頭バイトからの単純なソート # Copyright (c) 2002-2015 Mitsuo Minagawa, All rights reserved. # (minagawa@fb3.so-net.ne.jp) # 使用方法 : c:\>ruby sort.rb # # 入力ファイルを全部読み込む。 in1_file = IO.readlines("input.txt") # 出力ファイル out1_file = open("output.txt","w") # ソートして、ファイルを出力 out1_file.print in1_file.sort,"\n" # ファイルのクローズ in1_file.close out1_file.close
ccc,5555 aaa,7777 bbb,9999 aaa,1111 bbb,3333 bbb,4444 aaa,5555 ccc,1111
aaa,1111 aaa,5555 aaa,7777 bbb,3333 bbb,4444 bbb,9999 ccc,1111 ccc,5555