* 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でやった方がわかりやすそう。