1.03.2標準
users.txtは「ID 名前」、scores.txtは「ID 点数」の形式で、どちらもID順にソート済みである。
共通する第1フィールドIDを基準に2ファイルの行を結合する。
適切なコマンドはどれか。
× 不正解
joinは共通フィールドを持つ2つのソート済みテキストを関係データのように結合する。
詳細解説
誤り
paste users.txt scores.txt行番号が同じ行を横結合し、IDの一致を判定しない。
誤り。pasteは1行目同士を結合するだけで、IDが欠けたり順序がずれたりした場合に誤対応する。
正しい
join users.txt scores.txt既定で第1フィールドを結合キーとして、ソート済み入力を結合する。
正しい。joinは第1フィールドのIDを照合し、Aliceと80のように同じキーの行を結び付ける。
誤り
cat users.txt scores.txt2ファイルを縦に連結し、同じIDの項目を1行にしない。
誤り。catではscoresの行がusersの後へ続くだけで、同じIDの属性を1行に統合しない。
誤り
cut -f1 users.txt scores.txtフィールド抽出を行い、ファイル間の対応付けをしない。
誤り。cutは各入力内の一部を抜き出すが、2ファイル間のID照合を行わない。
実際に確かめる
一時的な検証環境で実行できる例です。
tmp=$(mktemp -d); printf '1 Alice\n2 Bob\n' >"$tmp/u"; printf '1 80\n2 90\n' >"$tmp/s"; join "$tmp/u" "$tmp/s"; rm -rf "$tmp"期待される結果
1 Alice 80
2 Bob 90理解のポイント
- joinはkey matching
- 既定keyは第1field
- 入力はkey順が基本
確認時の注意
- 確認環境: GNU coreutils 9.x / 一時テキスト
基礎のおさらい
事前ソート
joinは通常、結合フィールドで両入力が同じ照合順にソートされていることを前提とする。
キー位置
-1、-2、-jなどで各ファイルの結合フィールドを変更できる。
問題IDKL-101-453
確認環境GNU coreutils 9.x / 一時テキスト
最終技術確認2026-08-13
誤り・権利侵害を報告