CSVファイルから特定列を抜き出す

fastercsvを使うだけ.ruby標準のcsvライブラリは激遅."で囲ってあるのも対応.

  • fastercsvのインストール

$ gem install fastercsv

  • 次のファイルをcsv.rb とでもして保存
#!/usr/bin/env ruby

require 'rubygems'
require 'fastercsv'

cols = ARGV.shift.split(",")

FasterCSV.foreach(ARGV.shift) do |row|
  puts cols.map{|c| "\"" + row[c.to_i] + "\""}.join(",")
end
  • csv.rb の使い方
    • 1列目と3列目を取り出す(行の数え方が0オリジンなので,cut -f2,4に相当)

csv.rb 1,3 file.csv