1.03.2基礎
names.txtとscores.txtの同じ行番号同士を結合し、カンマ区切りで標準出力へ表示する。
キー照合は不要である。
適切なコマンドはどれか。
× 不正解
pasteは複数入力の対応行を列として結合する。-dで出力の区切り文字を指定できる。
詳細解説
誤り
join -t, names.txt scores.txt共通キーによる結合を試み、単純な行番号対応ではない。
誤り。joinは先頭フィールドの一致などを要求し、単純な第1行同士の結合ではない。
正しい
paste -d, names.txt scores.txt対応する行を横に並べ、区切り文字をカンマへ設定する。
正しい。pasteがnamesとscoresを行ごとに並べ、-d,が間のタブをカンマへ変更する。
誤り
cat names.txt scores.txt一方の全行の後へ他方を縦に連結する。
誤り。catではAlice、Bob、80、90のように縦へ並び、名前と点数が同じ行にならない。
誤り
cut -d, -f1 names.txt scores.txt既存入力からフィールドを抽出し、新しい横結合を作らない。
誤り。cutは各ファイル内の第1フィールドを出力するだけで、2列の新しい行を作らない。
実際に確かめる
一時的な検証環境で実行できる例です。
tmp=$(mktemp -d); printf 'Alice\nBob\n' >"$tmp/n"; printf '80\n90\n' >"$tmp/s"; paste -d, "$tmp/n" "$tmp/s"; rm -rf "$tmp"期待される結果
Alice,80
Bob,90理解のポイント
- pasteはline-wise columns
- -dはdelimiter
- joinはkey matching
確認時の注意
- 確認環境: GNU coreutils 9.x / 一時テキスト
基礎のおさらい
不足行
一方の入力が短い場合、pasteは不足側を空フィールドとして残りの行を処理する。
直列化
paste -sは各ファイルの行を直列化し、通常のファイル間横結合とは異なる。
問題IDKL-101-457
確認環境GNU coreutils 9.x / 一時テキスト
最終技術確認2026-08-13
誤り・権利侵害を報告