EN JA
JOIN(1)
JOIN(1) FreeBSD General Commands Manual JOIN(1)

名称

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

書式

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

解説

join ユーティリティは、指定されたファイルに対し“equality join”と呼ばれる、各ファイルの同一の部分を結合する操作を施して結果を標準出力に出力します。比較は、それぞれのファイルの“結合 (join) フィールド”と呼ばれるフィールドで行ないます。デフォルトでは、各行の最初のフィールドが使用されます。同一の結合 (join) フィールドがある file1file2 中の組となった各行を 1 行で出力されます。結合 (join) フィールドと、 file1 のうちの残りのフィールド、その後、 file2 のうちの残りのフィールドが 1 行になって出力されます。

フィールドの区切は、デフォルトではタブか空白文字です。複数のタブや空白が繋っていても、1 つの区切とみなされ、読み込み時にこれらは無視されます。出力時の各フィールドの区切は、デフォルトでは空白 1 文字です。

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

-a file_number
デフォルトの出力に加えて、 file_number で指定したファイルに関して、同一フィールドがなかった行を表示します。
-e string
出力時に、空のフィールドがあれば string で指定した文字列に置き換えます。
-o list
-o オプションは、一致する結合 (join) フィールドがある各行のための各ファイルから出力されるフィールドを指定します。 list の各要素には、形式 file_number. field (ここで、 file_number は、ファイル番号であり、 field は、フィールド番号です) または、 (結合 (join) フィールドを表す) 形式‘ 0’ (ゼロ) のいずれかがあります。リストの要素はコンマ (‘ ,’) または空白類のいずれかで分離されなければなりません。 (後者は、シェルから空白類を保護するために引用することを必要とするか、またはより簡単なアプローチとしては複数の -o オプションを使用することです。)
-t char
入力および出力に使用するフィールドの区切として char で指定した文字を使用するようにします。 1 行の中で出現したすべての char が有効です。
-v file_number
file_number で指定したファイル番号のファイルに関して、結合 (join) 処理で同一フィールドが見つからなかった行だけを表示するようにします。 -v 1-v 2 を同時に指定してもかまいません。
-1 field
file1field 番目のフィールドを結合します。
-2 field
file2field 番目のフィールドを結合します。

デフォルトのフィールド区切り文字が使われる場合、結合の対象となるファイルは、結合すべきフィールドをキーとして sort(1)-b オプションを付けたものでソートされていなければなりません。そうしないと、 join はマッチするフィールドを一部しか表示しないことがあります。 -t オプションでフィールド区切り文字が指定されている場合、 -b オプション無しの sort(1) でソートされていなければなりません。

file1 または file2 のうちの片方が‘ -’であった場合には、標準入力が使われます。

終了ステータス

The join utility exits 0 on success, and >0 if an error occurs.

互換性

さらに、古いバージョンの join との互換のため、次のオプションも使用できます。
-a
デフォルトの出力に加え、 file1file2 の各々で、同一フィールドがない行を表示します。
-j1 field
file1 の ``join field'' を field で指定した番号のフィールドとします。
-j2 field
file2 の ``結合 (join) フィールド'' を field で指定した番号のフィールドとします。
-j field
file1file2 の ``結合 (join) フィールド'' を field で指定した番号のフィールドとします。
-o list ...
歴史的な join の実装では -o オプションに複数の引数を許可していました。これらの引数は、現在の -o オプションで説明したものと同じ file_number. field_number という形式でした。しかし、この方法では 1.2 と名付けられたファイルが存在すると、明らかに困難を生じます。

これらのオプションは、修正をしたくないような非常に古いシェルスクリプトのためだけに用意されています。これらのオプションは、使うべきではありません。

規格

join コマンドは、 IEEE Std 1003.1-2001 (“POSIX.1”) に適合しています。
July 5, 2004 FreeBSD