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「1<タブ>x」「2<タブ>y」の2行が出力される
- B「1」「2」「x」「y」の4行が順に出力される
- C「1<タブ>2」「x<タブ>y」の2行が出力される
- D「1 2 x y」の1行が空白区切りで出力される
正解: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行にまとめることもしません。