概要
二つの入力を共通フィールドで突き合わせて結合します。前提として入力が結合キーで整列していることが重要です。
基本構文
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分ミッション
少しでも手を動かすと定着しやすくなります。終わった項目にチェックを入れてください。
-
同じキーを持つ二つの小さな表をsort後にjoinします。
資格試験との関連
-
LinuC レベル1
範囲: 1.03.2 フィルタを使ったテキストストリームの処理根拠: officialjoinは、テキスト処理系の基本フィルタとしてLinuCレベル1の範囲に関わります。
-
LPIC-1
範囲: 103.2 フィルタを使ったテキストストリームの処理根拠: officialjoinは、LPIC-1でテキストストリームへフィルタを適用する技能と関係します。
-
共通基礎
範囲: Linuxコマンド基礎根拠: editorialjoinは、ファイル操作またはテキスト処理の基本を支えるため、試験横断の共通知識として価値があります。
実行結果サンプル
-
join left.txt right.txta 1 X b 2 Y
戻り値コード
- 0 正常終了。結合に成功しました。
- >0 読取失敗や入力不正などで失敗しました。
使用例
join left.txt right.txtjoin -t ':' -1 1 -2 1 a.txt b.txt
よくあるエラー
-
期待通りに結合されない 原因: 入力がキーで整列されていません。対処: sortで結合キー順にそろえてからjoinします。
導入・互換性情報
POSIXで基本機能は共通です。
注意点 / セキュリティリスク
危険度は低いですが、整列前提を満たしていないと結果が崩れます。入力の構造確認が必須です。
FAQ
-
Q. pasteとの違いは何ですか。 A. pasteは行対応、joinはキー対応です。
参照リンク
- カテゴリー: Text Processing
- レベル: Practical
- 対応試験: LinuC, LinuC レベル1, LPIC, LPIC-1, 共通基礎