ナビゲーションリンクをスキップ | |
印刷ビューの終了 | |
マニュアルページセクション 1: ユーザーコマンド Oracle Solaris 11 Information Library (日本語) |
- リレーショナルデータベース演算子
/usr/src/join [-a filenumber] [-v filenumber] [-1 fieldnumber] [-2 fieldnumber] [-o list] [-e string][-t char] file1 file2
/usr/src/join [-a filenumber] [-j fieldumber] [-j1 fieldnumber] [-j2 fieldnumber] [-o list] [-e string][-t char] file1 file2
join は、ファイル file1 とファイル file2 で等結合を実行し、結果として生成される結合されたファイルを標準出力に書き込みます。デフォルトでは、フィールドは 1 つ以上のスペースまたはタブで区切られます。連続するスペースまたはタブ、あるいはその両方のうち、最後の 1 つ以外は無視されます。-t オプションを使用すると、フィールドの区切り文字を変更できます。
join フィールドとは、各ファイル内のフィールドであり、このフィールドでファイルが比較されます。デフォルトでは、join により、一致する join フィールドがある files1 と files2 内の行のペアごとに 1 行が出力に書き込まれます。デフォルトの出力行は、join フィールド、file1 の残りのフィールド、file2 の残りのフィールドで構成されますが、これは、-o オプションを使用すると変更できます。また -a オプションを使えば、一致しなかった行も出力できます。-v オプションは、一致しなかった行だけを出力するために使用します。
ファイル file1 とファイル file2 は、結合されるフィールド上でソート -b の照合順序でソートされている必要があります。ソートされていない場合、結果は不確定です。
file1 または file2 が - の場合、join は標準入力を使用します。開始位置は現在の位置です。
次のオプションには filenumber という引数を使用するものがあります。この引数の値は 1 または 2 で、それぞれ file1 または file2 を表します。
通常の出力に加え、ファイル filenumber 内の対にならなかった行についても出力します。filenumber の値は 1 または 2 です。-a 1 と -a 2 の両方を指定すると、対にならなかった行がすべて出力されます。
-o オプションで選択したリスト内にある空の出力フィールドを string 文字列で置き換えます。
-1 fieldnumber -2fieldnumber と同等です。フィールドには 1 から始まる番号が付きます。
-1 fieldnumber と同等です。フィールドには 1 から始まる番号が付きます。
-2fieldnumber と同じ意味です。フィールドには 1 から始まる番号が付きます。
各出力行は、list に指定されたフィールドを含みます。list で選択されたフィールドのうち入力中に現れないものは、空の出力フィールドとして扱われます (-e オプションの説明を参照)。この各要素の形式は filenumber.fieldnumber または 0 で、後者は join フィールドを表します。特に指定しないかぎり、共通フィールドは出力しません。
char で示す文字を区切り文字として使用します。1 つの行に char が複数個あるとき、それらはすべて有効です。文字 char は、入力と出力の両方においてフィールド区切り文字として使われます。このオプションを指定する場合、照合される語は -b オプションなしで sort を実行した場合にも同一とみなされる語でなければなりません。
デフォルト形式の出力ではなく、filenumber 内の対にならなかった行だけを出力します。filenumber の値は 1 または 2 です。-v 1 と -v 2 の両方を指定すると、対にならなかった行がすべて出力されます。
ファイル 1 の fieldnumber 番目のフィールドで結合します。フィールド番号は 1 から始まる 10 進整数です。
ファイル 2 の fieldnumber 番目のフィールドで結合します。フィールド番号は 1 から始まる 10 進整数です。
次のオペランドがサポートされています。
結合するファイルのパス名。file1 と file2 のどちらかに – を指定すると、そのファイルの代わりに標準入力が使用されます。
結合するファイルのパス名。file1 と file2 のどちらかに – を指定すると、そのファイルの代わりに標準入力が使用されます。
file1 と file2 は、結合するフィールド (通常は各行の最初のフィールド) 上で LC_COLLATE によって決められた照合順序で昇順にソートされていなければなりません (sort(1) を参照)。
ファイルが 2G バイト (231 バイト) 以上ある場合の join の動作については、largefile(5) を参照してください。
例 1 パスワードファイルとグループファイルの結合
次のコマンド行は、パスワードファイルとグループファイルを結合し、数値グループ ID のマッチングを行い、ログイン名、グループ名、およびログインディレクトリを出力します。ファイルは、グループ ID フィールド上において ASCII の照合順序でソートされていると仮定します。
example% join -j1 4-j2 3 -o 1.1 2.1 1.6 -t:/etc/passwd /etc/group
例 2 -o オプションの使用
-o 0 は、基本的には結合フィールドを統合したフィールドを表します。たとえば、phone という名のファイルは次のような内容だとします。
!Name Phone Number Don +1 123-456-7890 Hal +1 234-567-8901 Yasushi +2 345-678-9012
また、fax というファイルは次のような内容だとします。
!Name Fax Number Don +1 123-456-7899 Keith +1 456-789-0122 Yasushi +2 345-678-9011
この 2 つのファイルで、長いスペース部分は 1 つのタブ文字を表しているものとします。このとき次のようなコマンドを実行します。
example% join -t"tab" -a 1 -a 2 -e '(unknown)' -o 0,1.2,2.2 phone fax
すると次のような出力が生成されます。
!Name Phone Number Fax Number Don +1 123-456-7890 +1 123-456-7899 Hal +1 234-567-8901 (unknown Keith (unknown) +1 456-789-012 Yasushi +2 345-678-9012 +2 345-678-9011
join の実行に影響を与える次の環境変数についての詳細は、environ(5) を参照してください。LANG、LC_ALL、LC_CTYPE、LC_MESSAGES、LC_COLLATE、および NLSPATH。
次の終了値が返されます。
入力ファイルはすべて正常に出力されました。
エラーが発生しました。
属性についての詳細は、attributes(5) を参照してください。
|
awk(1), comm(1), sort(1), uniq(1), attributes(5), environ(5), largefile(5), standards(5)
デフォルトでフィールドを分離する場合、照合順序は -b を付けた sort コマンドに対応した順序です。-t の場合、照合順序は b を付けない sort コマンドの順序になります。
join、sort、comm、uniq、awk コマンドの規則は一律ではありません。