utte

join 共通の項目をキーにして、2つのファイルの行を結合する

join [オプション] ファイル1 ファイル2

試してみる

主なオプション

-t 文字区切り文字を指定する(既定は空白)
-1 列 / -2 列ファイル1、ファイル2のキーとなる列を指定する
-a 1|2結合できなかったファイル1(または2)の行も出力する
-v 1|2結合できなかったファイル1(または2)の行だけ出力する
-o 形式出力する項目を、ファイル番号.列 の形で指定する
-iキーの大文字と小文字を区別しない

解説

基本

join は、2つのファイルで共通する項目(キー)の値が同じ行どうしを結合します。データベースの結合に似た処理で、社員番号をもとに、氏名の表と部署の表を1つにまとめる、といった使い方ができます。

入力は並べ替えておく

2つのファイルは、キーの列で並べ替えられている必要があります。並んでいないと、結合されない行が出たり、警告が出たりします。並んでいないときは、先に sort をかけます。

キーと区切り

キーは、既定では両方のファイルの1列目です。別の列を使うときは -1、-2 で指定します。区切りは既定では空白で、CSVなどでは -t, と指定します。出力は、キー、ファイル1の残りの項目、ファイル2の残りの項目の順です。

結合できない行

既定では、相手がいない行は出力されません。-a は、相手がいない行も含めて出力します。-v は、相手がいない行だけを出力します。

paste との違い

paste は行番号が同じ行を並べるだけです。join は、キーの値が同じ行を探して結合します。

このコマンドを使う問題

  1. joinで2つのファイルを共通の欄で結合する

関連するコマンド

LinuC 101の出題範囲