Linuxコマンド虎の巻

join

joinは、テキストファイル同士を結合して表示するコマンドです。

構文

(構文)
join [オプション] <ファイル名1> <ファイル名2>
【オプション】
オプション説明
-a 番号指定した番号のファイルの項目は全て出力する
-ijoin時に大文字小文字を区別しない
-j 列番号joinに使用する列番号を指定する(未指定時は1)
-t 文字区切り文字を指定する(未指定時は半角スペース)
-v一致しない行を表示する
--helpヘルプを表示する

サンプル

以下のファイルをサンプルとして使用します。

aa.txt

1 aaa 2 bbb 3 ccc 4 ddd 5 eee

bb.txt

1 50 2 100 3 150 5 250

cc.txt

1 aaa 3 ccc 4 ddd 5 eee

aa.txtとbb.txtを1列目の項目で結合して表示する

$join aa.txt bb.txt 1 aaa 50 2 bbb 100 3 ccc 150 5 eee 250

aa.txtとbb.txtを1列目の項目で結合して、1番目のファイル(aa.txt)の項目は全て表示する

$ join -a 1 aa.txt bb.txt 1 aaa 50 2 bbb 100 3 ccc 150 4 ddd 5 eee 250

aa.txtとbb.txtを1列目の項目で結合して2番目のファイル(bb.txt)の項目は全て表示する

$ join -a 2 aa.txt bb.txt 1 aaa 50 2 bbb 100 3 ccc 150 5 eee 250

cc.txtとbb.txtを1列目の項目で結合し、1番目のファイル(cc.txt)と2番目のファイル(bb.txt)の項目は全て表示する

$ join -a 1 -a 2 cc.txt bb.txt 1 aaa 50 2 100 3 ccc 150 4 ddd 5 eee 250

cc.txtとbb.txtを1列目の項目で結合し、1番目のファイル(cc.txt)の1列目と2列目を表示する

$ join -o 1.1 1.2 cc.txt bb.txt 1 aaa 3 ccc 5 eee

1.1は1番目のファイルの1列目という意味です。

備考

  • joinは、「join:結合する」という英単語が元になっています。
  • joinを使うと、SQLでテーブルを結合するかのようにテキストファイルを結合表示することができます。