JOIN(1)

名称
join - リレーショナルデータベースの操作

書式
join [ -a file_number | -v file_number] [-e string] [-j file_number field] [-o list] [-t char] [-1 field] [-2 field] file1 file2

解説
join は、指定されたファイルに対し ``equality join'' と呼ばれる、各ファイルの 同一の部分を結合する操作を施して結果を標準出力に出力します。 file1 もしくは、 file2 に ``-'' が指定された場合は、標準入力から読み込みます。

一致の比較は、各々のファイルの ``join field'' と呼ばれるフィールドで行います。 デフォルトでは、各行の最初のフィールドが使用されます。 file1 と file2 の中で、``join field'' が一致した行が組みになって、最初に ``join field'' が、次に file1 のうちの残りのフィールドが、その後、 file2 のうちの残りのフィールドが、1 行になって出力されます。 フィールドの区切は、デフォルトではタブか空白文字です。複数のタブや空白 が繋っていても、1 つの区切とみなされ、読込み時にこれらは無視されます。 出力時の各フィールドの区切は、デフォルトでは空白 1 文字です。

ファイルとフィールドの番号に関し、多くのオプションがあります。これらの 番号は常に、1 から始まります。すなわち、コマンドラインの最初のファイル はファイル番号 1 番であり、各行の最初のフィールドは、フィールド番号 1 番となります。

-a file_number
    デフォルトの出力に加えて、 file_number で指定したファイルに関して、同一フィールドがなかった行を表示します。

-e string
    出力時に、空のフィールドがあれば string で指定した文字列に置き換えます。

-o list
    join の処理して出力すべき行に関し、デフォルトの順序でなく、 list で指定した順序で各ファイルの各フィールトを出力 するようにします。 list の各要素は、 ‘file_number.field’ で表わし、要素間は、コンマ (``,'') か空白で区切ります。 (空白で区切る場合は、シェルが要素を別々のパラメータに分解しないよう、 クォーティングする必要があります)

-t char
    入力および出力に使用するフィールドの区切として char で指定した文字を使用するようにします。

-v file_number
    file_number で指定したファイル番号のファイルに関して、 join 処理で同一フィールドが見つからなかった行を表示するようにします。 -v 1 と -v 2 を同時に指定してもかまいません。

-1 field
    ファイル1の ``join field'' を field で指定した番号のフィールドとします。

-2 field
    ファイル2 の ``join field'' を field で指定した番号のフィールドとします。

さらに、古いバージョンのjoinとの互換のため、次のオプションも使用できます。

-a  デフォルトの出力に加え、file1 と file2 の各々で、同一フィールドがない行を 表示します。

-j1 field
    -1 field_number と同じです。

-j2 field
    -2 field_numberと同じです。

-j field
    file1 と file2 の両方について、field を指定します。

なお、 join で処理するファイルは、各行の ``join field'' が、 sort(1) で採用されている順番になっているべきです。このため、デフォルトの フィールド区切記号を使う場合は、 join の前に、 sort に -b オプションを付けてソートしておきます。フィールド区切記号を -t オプションで指定する場合は、同じフィールド区切記号を sort に指定し、 -b オプションなしでソートしておきます。

戻り値
成功した場合は、0 を、エラーがおきた場合は、0 より大きな値を返します。

規格
join コマンドは p1003.2 互換です。

関連項目
awk(1), comm(1), paste(1), sort(1), uniq(1)