join ジョイン

英語表記join

日本語表記共通キー結合

正式名称join

危険度安全

What does it mean?

二つの入力を共通フィールドで突き合わせて結合します。前提として入力が結合キーで整列していることが重要です。

Command Quest

join を今日の道具にする

二つの入力を共通フィールドで突き合わせて結合します。前提とし...

$ join [オプション]... ファイル1 ファイル2
関連用語0
次のコマンド0
FAQ1
参照3

概要

二つの入力を共通フィールドで突き合わせて結合します。前提として入力が結合キーで整列していることが重要です。

基本構文

join [オプション]... ファイル1 ファイル2

詳細解説

joinは、二つのテキストを共通フィールドで突き合わせて結合するコマンドです。CSV風の簡易データや一覧表をシェルで扱う時に役立ちます。

重要なのは、結合キーで整列されていることです。整列されていない入力に対して使うと期待外れの結果になります。多くの場合、sortを前処理として組み合わせます。

pasteが行番号対応なのに対し、joinはキー対応です。表形式データを扱う入口として覚える価値があります。

このコマンドを使う場面

二つの一覧をキーで突き合わせたい時、簡易的な表結合を行いたい時に使います。

まず安全に試す方法

1. printf 'a 1nb 2n' > left.txt
2. printf 'a Xnb Yn' > right.txt
3. join left.txt right.txt

3分ミッション

少しでも手を動かすと定着しやすくなります。終わった項目にチェックを入れてください。

  1. 同じキーを持つ二つの小さな表をsort後にjoinします。

資格試験との関連

  • LinuC レベル1
    範囲: 1.03.2 フィルタを使ったテキストストリームの処理
    根拠: official
    joinは、テキスト処理系の基本フィルタとしてLinuCレベル1の範囲に関わります。
  • LPIC-1
    範囲: 103.2 フィルタを使ったテキストストリームの処理
    根拠: official
    joinは、LPIC-1でテキストストリームへフィルタを適用する技能と関係します。
  • 共通基礎
    範囲: Linuxコマンド基礎
    根拠: editorial
    joinは、ファイル操作またはテキスト処理の基本を支えるため、試験横断の共通知識として価値があります。

オプション

  • -1 番号
    左入力の結合フィールド番号を指定します。
    join -1 1 -2 2 left right
  • -2 番号
    右入力の結合フィールド番号を指定します。
    join -1 1 -2 2 left right
  • -t 区切り文字
    区切り文字を指定します。
    join -t ':' a.txt b.txt

実行結果サンプル

  • join left.txt right.txt
    a 1 X
    b 2 Y

戻り値コード

  • 0 正常終了。結合に成功しました。
  • >0 読取失敗や入力不正などで失敗しました。

使用例

  • join left.txt right.txt
  • join -t ':' -1 1 -2 1 a.txt b.txt

よくあるエラー

  • 期待通りに結合されない
    原因: 入力がキーで整列されていません。
    対処: sortで結合キー順にそろえてからjoinします。

導入・互換性情報

POSIXで基本機能は共通です。

注意点 / セキュリティリスク

危険度は低いですが、整列前提を満たしていないと結果が崩れます。入力の構造確認が必須です。

FAQ

  • Q. pasteとの違いは何ですか。
    A. pasteは行対応、joinはキー対応です。

参照リンク

関連記事