■Windows版Rubyの細道・けもの道

■ナビゲータ

[南北館(最初のメニュー)]

  1. [Windows版Rubyの細道・けもの道]
    1. [1.準備編]
    2. [2.基本編]
      1. [2-1.基本処理]
      2. [2-2.キーブレイク処理]
      3. [2-3.マッチング(照合)処理]
      4. [2-4.ソート(並べ替え)処理]
        1. [2-4-1.レコード全体のソート(並べ替え)]
        2. [2-4-2.CSVファイルの文字列型昇順ソート(並べ替え)]
        3. [2-4-3.CSVファイルの文字列型・数値型/昇順・降順ソート(その1)]
        4. [2-4-4.CSVファイルの文字列型・数値型/昇順・降順ソート(その2)]
        5. [2-4-5.大量のCSVファイルのソート(並べ替え)する場合の考慮事項]
        6. [2-4-6.大量のCSVファイルの文字列型/昇順ソート(並べ替え)]
        7. [2-4-7.大量のCSVファイルの文字列型・数値型/昇順・降順ソート(並べ替え)]
      5. [2-5.パターンマッチ処理]
    3. [3.応用編]
    4. [スクリプトと入力データのサンプル]
Perlではどう処理する?
同じことをPerlではこうしています。

2.基本編

2-4.ソート(並べ替え)処理

2-4-1.レコード全体のソート(並べ替え)

単純に先頭バイトから始まるデータの内容で並べ替えを行うスクリプトです。固定長のデータを並べ替えるのに適していますが、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 
    


【スクリプトとデータのサンプル】

スクリプトはこちらにあります。

入力データのサンプルはこちらにあります。

【入力データ:ソート(並べ替え)前のデータ(input.txt)】
ccc,5555   
aaa,7777
bbb,9999
aaa,1111
bbb,3333
bbb,4444
aaa,5555
ccc,1111
    
【出力データ:ソート(並べ替え)後のデータ(output.txt)】
aaa,1111   
aaa,5555
aaa,7777
bbb,3333
bbb,4444
bbb,9999
ccc,1111
ccc,5555
    



Copyright (c) 2004-2015 Mitsuo Minagawa, All rights reserved.