Movatterモバイル変換


[0]ホーム

URL:


hydroculのメモ >コマンドの使い方(Linux) >join コマンド

join コマンド2015/11/09

特定の列をキーにして、複数のファイルを行単位でJOINする。SQLのJOINみたいな。

キーに関係なく、単に行同士を結合するにはpasteコマンドを使う。

2つのタブ区切りのファイルをjoinする例

$ cat a.txt1       Danny   292       Jess    243       Joey    294       D.J.    105       Steph   56       Michelle        0$ cat b.txt1       m2       m3       m4       f5       f6       f$ join -1 1 -2 1 a.txt b.txt1 Danny 29 m2 Jess 24 m3 Joey 29 m4 D.J. 10 f5 Steph 5 f6 Michelle 0 f

-1 1 は1つ目のファイルは1つ目のフィールドをキーにするという意味。-2 1 は2つ目のファイルは1つ目のフィールドをキーにするという意味。

入力はタブ区切りでなくてもスペース区切りでもいい。区切り文字が複数連続していても1つの区切りとみなされるので、スペースで横位置を揃えてある固定長フィールドのファイルも意図通りの動作になる。

出力は単一のスペース区切りになる。

固定長フィールドのファイル処理の例

$ cat test1.txtDanny    29 0Jess     24 1Joey     29 2D.J.     10 3Steph    5 4Michelle 0 5$ cat test2.txt0 m1 m2 m3 f4 f5 f$ join -1 3 -2 1 test{1,2}.txt0 Danny 29 m1 Jess 24 m2 Joey 29 m3 D.J. 10 f4 Steph 5 f5 Michelle 0 f

-1 3 -2 1 は1つ目のファイルは3つ目のフィールドをキーにし、2つ目のファイルは1つ目のフィールドをキーにする、という意味。

test{1,2}.txt という書き方は bash や zsh にある機能で、これはtest1.txt test2.txt に展開されてからコマンドに渡される。

インストール2016/03/17

Coreutilsというパッケージに入っているので、CentOSにもUbuntuにも始めから入っている。

このサイトは筆者(hydrocul)の個人メモの集合です。すべてのページは永遠に未完成です。
スポンサーリンク

[8]ページ先頭

©2009-2025 Movatter.jp