joinコマンド

CSVファイルのようにセパレータを持つデータファイルが2つある時、(互いに共通な)キーを使って、2つのファイルをマージする。SQLのテーブルジョインのような事をするコマンド。

前提

A.csv:

 1,ONE
 2,TWO
 3,THREE
 4,FOUR

B.csv:

 one,1
 three,3
 two,2

1,2,3,4が結合キー。

使い方

最初に、

 sort +1 -t , B.csv  > C.csv

キーはソートをかけておくこと!

単純なJOIN

 join -t , -1 1 -2 2 A.csv C.csv 
 
 1,ONE,one
 2,TWO,two
 3,THREE,three
  • -1 と -2 で 1番目のファイル、2番目のファイルの結合キーのカラム番号を指定する。
  • -tでセパレータを指定する。

LEFT OUTER JOIN(片方のファイルにない行も表示する)

 join -t , -a 1 -1 1 -2 2 A.csv C.csv
 
 1,ONE,one
 2,TWO,two
 3,THREE,three
 4,FOUR
  • -aオプションを指定する。

他にもオプションはあるが、

Perlでやった方がわかりやすそう。


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS

Last-modified: 2009-11-30 (月) 15:43:54