過去問ドリル

LinuCレベル1 GNUとUnixのコマンド 問32

GNUとUnixのコマンド/フィルタを使ったテキストストリームの処理

ファイル a.txt には「1」「2」の2行が、ファイル b.txt には「x」「y」の2行が書かれている。paste a.txt b.txt を実行したときの出力として正しいものはどれか。

当サイトのオリジナル問題(LinuCレベル1の出題範囲「GNUとUnixのコマンド」に対応。実際の試験問題ではありません)

正解:A

解説

paste は、複数のファイルの同じ行番号の行どうしを、既定ではタブで区切って横につなげて出力するコマンドです。そのため a.txt の1行目と b.txt の1行目、2行目どうしが連結された2行が出力されます。区切り文字は -d オプションで変更でき、-s を付けると各ファイルの全行を1行にまとめる動作になります。共通のフィールドの値で行を突き合わせて結合したい場合は join を使います。

選択肢ごとの解説

  • A正しい。対応する行どうしがタブ区切りで横に連結されます。
  • B誤り。ファイルの内容を順に縦につなげて出力するのは cat a.txt b.txt の動作です。
  • C誤り。各ファイルの行を1行にまとめるのは paste -s を付けた場合の動作です。
  • D誤り。paste の既定の区切り文字はタブで、全体を1行にまとめることもしません。
LinuCレベル1の問題を演習モードで解く