固定長テキストを項目でソートする (2)
http://d.hatena.ne.jp/argius/20060302/1141309017
前回、どこかRubyらしくないよなー、と思っていたが、なるほど、ブロックの書き方でした。記号を排して書きたいのだから、ブロックはdo-endで書いたほうが良いね。
# 固定長テキスト→配列 rows = [] while (line = gets) != nil rows.push(line.chomp!.unpack("A2 A23 A8 A5 A37 A38 A*")) end # ソート(破壊的) rows.sort! do |a, b| b[3].to_s <=> a[3].to_s or a[4].to_s <=> b[4].to_s or a[5].to_s <=> b[5].to_s end # フォーマット出力 rows.each do |row| printf "%s %-4s %s/%s\n", row[1], row[3], row[5], row[4] end
中カッコがひとつもない暮らし、Rubyにはあります。