* joinコマンド [#y6030929]

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

** 前提 [#mea07de6]
A.csv:
 1,ONE
 2,TWO
 3,THREE
 4,FOUR
B.csv:
 one,1
 three,3
 two,2

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


** 使い方 [#cf91adcc]

最初に、キーはソートをかけておくこと!
***最初に、 [#de2c0770]
 sort +1 -t , B.csv  > C.csv
キーはソートをかけておくこと!

*** 単純なJOIN [#p4f0d946]

 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(片方のファイルにない行も表示する) [#xbca7022]

 join -t , -a 1 -1 1 -2 2 A.csv C.csv
 
 1,ONE,one
 2,TWO,two
 3,THREE,three
 4,FOUR

- -aオプションを指定する。

** 他にもオプションはあるが、 [#v4ce61e8]
Perlでやった方がわかりやすそう。

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