join コマンド
目的
2 つのファイルのデータ・フィールドを結合します。
構文
結合 [ -a 値 FileNumber | -v (V) FileNumber ] [ -e (E) ストリング ] [ - リスト ] [ T キャラクター ] [ -1 フィールド ] [ -2 フィールド ] File1 File2
説明
join コマンドは、 File1 パラメーターと File2 パラメーターで指定されたファイルを読み取って、フラグに従ってファイル内の行を結合し、結果を標準出力に書き出します。 File1 および File2 パラメーターに指定するファイルは、どちらもテキスト・ファイルでなければなりません。 File1 と File2 はどちらも、join コマンドを呼び出す前に、 結合されるフィールド上でソート -b の照合シーケンスでソートされていなければなりません。
両ファイル内の同一の結合フィールドごとに 1 行が出力に表示されます。 結合フィールドは入力ファイル内のフィールドで、join コマンドによって検査され、何を出力に入れるかが決定されます。 出力行は、結合フィールド、File1 パラメーターによって指定されたファイルの行の残部、 および File2 パラメーターによって指定されたファイルの行の残部で構成されます。 ファイル名として - (ダッシュ) を置き換えることにより、 File1 パラメーターまたは File2 パラメーターの代わりに標準入力を指定します。 両方の入力ファイルを - (ダッシュ) で指定することはできません。
通常、フィールドは、スペース、タブ文字、または改行文字で区切られます。 この場合、join コマンドは連続するセパレーターを 1 つのものとして処理し、先行するセパレーターを破棄します。
フラグ
| 項目 | 説明 |
|---|---|
| -1 フィールド | File1 入力ファイルの Field 変数で指定されたフィールドを使用して、2 つのファイルを結合します。 Field 変数の値は、正の 10 進整数でなければなりません。 |
| -2 フィールド | File2 入力ファイルの Field 変数で指定されたフィールドを使用して、2 つのファイルを結合します。 Field 変数の値は、正の 10 進整数でなければなりません。 |
| -a FileNumber | FileNumber 変数で指定されたファイル内の行のうち、結合フィールドがもう一方の入力ファイルのどの行とも一致しない行について、1 行ずつ出力行を作成します。 この出力行はデフォルト出力とは別に作成されます。 FileNumber 変数の値は、それぞれ File1 パラメーターおよび File2 パラメーターで指定したファイルに対応する 1 または 2 でなければなりません。 このフラグを -v フラグと共に指定すると、このフラグは無視されます。 |
| -e (E) ストリング | 空の出力フィールドを String 変数で指定した文字列で置き換えます。 |
| - リスト | List 変数で指定されたフィールドから構成される出力行を構築します。 List 変数には、以下のいずれかの形式が適用されます。
|
| T キャラクター | 入力および出力内のフィールド・セパレーターとして、Character パラメーターに指定された文字を使用します。 この文字は行全体で有効です。 デフォルトのセパレーターはスペースです。 デフォルトのフィールド区切りでは、照合順序はsort-bコマンドのものとなる。 -t を指定すると、照合シーケンスは単純なソートの順序になります。 タブ文字を指定する場合は、単一引用符で囲みます。 |
| -v FileNumber | FileNumber 変数で指定されたファイル内の行のうち、結合フィールドがもう一方の入力ファイルのどの行とも一致しない行について、1 行ずつ出力行を作成します。 デフォルト出力は作成されません。 FileNumber 変数の値は、File1 パラメーターおよび File2 パラメーターで指定した各ファイルに対応する 1 または 2 でなければなりません。 このフラグと共に -a フラグを指定すると、-a フラグは無視されます。 |
終了状況
このコマンドは、以下の終了値を戻します。
| 項目 | 説明 |
|---|---|
| 0 | 正常終了。 |
| >0 | エラーが発生しました。 |
例
- 最初のフィールドが同じ 2 つのファイルに対して単純な結合操作を実行するには、次のように入力します。
:NONE.phonedirファイルには以下の名前が含まれます。join phonedir names
およびnamesファイルには、以下の名前と部門番号が含まれます。Adams A. 555-6235 Dickerson B. 555-1842 Erwin G. 555-1234 Jackson J. 555-0256 Lewis B. 555-3237 Norwood M. 555-5341 Smartt D. 555-1540 Wright M. 555-1234 Xandy G. 555-5015
join コマンドは、以下を表示します。Erwin Dept. 389 Frost Dept. 217 Nicholson Dept. 311 Norwood Dept. 454 Wright Dept. 520 Xandy Dept. 999
各行は、結合フィールド (最後の名前) と、それに続く残りの行で構成されます。phonedir行の残りの部分を表示します。namesを適用します。Erwin G. 555-1234 Dept. 389 Norwood M. 555-5341 Dept. 454 Wright M. 555-1234 Dept. 520 Xandy G. 555-5015 Dept. 999 - 結合 コマンドを使用して一致しない行を表示するには、次のように入力します。join -a2 phonedir namesIf thephonedir およびnamesファイルが例 1 と同じである場合、 結合 コマンドは次のように表示します。
このコマンドは、例 1 と同じ結合操作を実行し、一致するものがない名前の行もリストします。phonedirを適用します。 名称FrostおよびNicholsonに項目がない場合でも, リストに組み込まれます。phonedirを適用します。Erwin G. 555-1234 Dept. 389 Frost Dept. 217 Nicholson Dept. 311 Norwood M. 555-5341 Dept. 454 Wright M. 555-1234 Dept. 520 Xandy G. 555-5015 Dept. 999 - 結合 コマンドを使用して、選択したフィールドを表示するには、次のように入力します。join -o 2.3,2.1,1.2,1.3 phonedir namesこれによって、次のフィールドが指定された順序で表示されます。If thephonedir ファイルおよびnamesファイルが例 1 と同じである場合、 結合 コマンドは次のように表示します。
項目 説明 フィールド 3 names 部門番号 フィールド 1names 姓 フィールド 2phonedir 名前の頭文字 フィールド 3phonedir 電話番号 389 Erwin G. 555-1234 454 Norwood M. 555-5341 520 Wright M. 555-1234 999 Xandy G. 555-5015 - 最初のフィールド以外のフィールドで結合操作を実行するには、次のように入力します。sort -b +2 -3 phonedir | join -1 3 - numbersこのコマンドは、以下の行を結合します。phonedirおよびnumbersファイルの 3 番目のフィールドの比較phonedirファイルを最初のフィールドにnumbersを適用します。
最初に、このコマンドは以下をソートします。phonedirファイルは 3 番目のフィールドでソートされます。これは、両方のファイルが結合フィールドでソートされなければならないためです。 次に、sort コマンドの出力がパイプを通して join コマンドに入力されます。 - (ダッシュ) が付いているので、join コマンドはこの出力を最初のファイルとして使用します。 この-1 3フラグは、ソートの 3 番目のフィールドを定義します。phonedirファイルを結合フィールドとして使用します。 これは、以下の最初のフィールドと比較されます。numbersこれは、結合フィールドが -2 フラグで指定されていないためです。
If thenumbersファイルの内容:
このコマンドは, リストされた名前を表示します。phonedirファイルまたは各電話番号:555-0256 555-1234 555-5555 555-7358
join コマンドは、指定されたフィールドに対して、一致するものをすべてリストすることに注意してください。 この場合、 結合 コマンドは、以下の両方をリストします。Erwin G. およびWright M.電話番号を持っているとして555-1234. 数値555-5555表示されていないため, リストされていません。phonedirを適用します。555-0256 Jackson J. 555-1234 Erwin G. 555-1234 Wright M.
ファイル
| 項目 | 説明 |
|---|---|
| /usr/bin/join | join コマンドが入っています。 |
| /usr/lib/nls/loc/*.src | 照合情報が入ってます。 |