名前 | 形式 | 機能説明 | オプション | オペランド | 使用法 | 使用例 | 環境 | 終了ステータス | 属性 | 関連項目 | 注意事項
join コマンドは、 file1 および file2 を行単位で結合し、標準出力上にその結果を出力します。
一致するフィールドを持つ file1 と file2 の各行について 1 行が出力されます。出力行は通常、共通フィールド、 file1 の行の残り、file2 の行の残りの順で構成されます。 ただしこの出力形式は、後述する -o オプションを使って変更できます。また -a オプションを使えば、一致しなかった行も出力できます。-v オプションは、一致しなかった行だけを出力するために使用します。
デフォルトの入力フィールド区切り文字は、空白文字、タブ、 または復帰改行です。 この場合、連続する区切り文字は 1 つのフィールド区切り文字とみなします。 先行する区切り文字は無視されます。デフォルト出力フィールド区切り文字は空白文字です。
入力行が正しい照合順序でならんでいない場合、コマンドの結果は予測できません。
次のオプションには filenumber という引数を使用するものがあります。この引数の値は 1 または 2 で、それぞれ file1 または file2 を表します。
通常の出力に加え、 ファイル filenumber 内の対にならなかった行についても出力します。 filenumber の値は 1 または 2 です。 -a 1 と -a 2 の両方を指定すると、対にならなかった行がすべて出力されます。
-o オプションで選択したリスト内にある空の出力フィールドを string 文字列で置き換えます。
-1fieldnumber -2fieldnumber と同じ意味です。
-1fieldnumber と同じ意味です。
-2fieldnumber と同じ意味です。 フィールドには 1 から始まる番号が付きます。
各出力行は、list に指定されたフィールドを含みます。list で選択されたフィールドのうち入力中に現れないものは、出力側では空のフィールドとして扱われます (-e オプションの説明を参照)。 list の各要素の形式は filenumber.fieldnumber または 0 で、後者は join フィールドを表します。 特に指定しないかぎり、共通フィールドは出力しません。
char で示す文字を区切り文字として使用します。 1 つの行に char が複数個あるとき、それらはすべて有効です。文字 char は、入力と出力の両方においてフィールド区切り文字として使われます。 このオプションを指定する場合、照合される語は -b オプションなしで sort を実行した場合にも同一とみなされる語でなければなりません。
デフォルト形式の出力ではなく、 filenumber 内の対にならなかった行だけを出力します。 filenumber の値は 1 または 2 です。 -v 1 と -v 2 の両方を指定すると、対にならなかった行がすべて出力されます。
file1 の何番目のフィールドで結合するかを、フィールド番号で指定します。フィールド番号は 1 から始まる整数です。
file2 の何番目のフィールドで結合するかを、フィールド番号で指定します。フィールド番号は 1 から始まる整数です。
以下のオペランドを指定できます。
結合するファイルのパス名。file1 と file2 のどちらかに – を指定すると、そのファイルの代わりに標準入力が使用されます。
file1 と file2 は、結合するフィールド (通常は各行の最初のフィールド) 上で LC_COLLATE によって決められた 照合順序で昇順にソートされていなければなりません (sort(1) を参照)。
ファイルが 2 ギガバイト ( 231 バイト) 以上ある場合の join の動作については、 largefile(5) を参照してください。
下記のコマンド行は、パスワードファイルとグループファイルを結合し、数値グループ ID のマッチングを行い、ログイン名、グループ名、 ログインディレクトリを出力します。ファイルは、グループ ID フィールド上において ASCII の照合順序でソートされていると仮定します。
example% join -j1 4-j2 3 -o 1.1 2.1 1.6 -t:/etc/passwd /etc/group |
-o 0 は、基本的には結合フィールドを統合したフィールドを表します。たとえば、 phone という名のファイルは次のような内容だとします。
!Name Phone Number Don +1 123-456-7890 Hal +1 234-567-8901 Yasushi +2 345-678-9012 |
!Name Fax Number Don +1 123-456-7899 Keith +1 456-789-0122 Yasushi +2 345-678-9011 |
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 の実行に影響を与える環境変数 LC_CTYPE、 LC_MESSAGES、LC_COLLATE、NLSPATH についての詳細は、environ(5) を参照してください。
次の属性については attributes(5) のマニュアルページを参照してください。
属性タイプ | 属性値 |
使用条件 | SUNWcsu |
CSI | 対応済み |
デフォルトでフィールドを分離する場合、照合順序は -b を付けた sort コマンドに対応した順序です。 -t の場合、照合順序は -b を付けない sort コマンドの順序になります。
join 、 sort 、 comm 、 uniq 、 awk コマンドの規則は一律ではありません。
名前 | 形式 | 機能説明 | オプション | オペランド | 使用法 | 使用例 | 環境 | 終了ステータス | 属性 | 関連項目 | 注意事項