【 paste 】コマンド――複数のファイルを行単位で連結する:Linux基本コマンドTips(101)
本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、「paste」コマンドです。
本連載では、Linuxの基本的なコマンドについて、基本的な書式からオプション、具体的な実行例までを分かりやすく紹介していきます。今回は、複数のファイルを行単位で連結する「paste」コマンドです。
pasteコマンドとは?
「paste」は、複数のファイルを行単位で連結するコマンドです。「paste ファイル1 ファイル2」で「ファイル1の1行目とファイル2の1行目」、「ファイル1の2行目とファイル2の2行目」……という行が出力されます。Excelに親しんでいる方は、「列のコピー」と考えると動作をイメージしやすいかもしれません。
pasteコマンドの主なオプション
pasteコマンドの主なオプションは次の通りです。
短いオプション | 長いオプション | 意味 |
---|---|---|
-d 区切り文字 | --delimiters=区切り文字 | 区切り文字を指定する(本文参照) |
-s | --serial | 1行ごとではなく、ファイル単位で連結する |
ファイルを行単位で連結する
「paste ファイル1 ファイル2」で、ファイル1とファイル2を行単位で連結します。出力は「ファイル1の1行目 タブ(TAB) ファイル2の1行目」、「ファイル1の2行目 タブ(TAB) ファイル2の2行目」……のようになります。
3つ以上のファイルを指定することも可能で、この場合も単純に各ファイルの1行目、各ファイルの2行目……と出力されることになります。
コマンド実行例
paste ファイル1 ファイル2 ファイル3
(ファイル1とファイル2とファイル3を連結する)(画面1)
なお、画面1では、「list1-1.txt list1-2.txt list1-3.txt」を「list1-[1-3].txt」と指定しています。
区切り文字を変更する
区切り文字は「-d」オプションで指定します。例えば、カンマ(,)区切りで出力したい場合は「-d ,」と指定します。
複数の文字を指定した場合、1文字目がファイル1とファイル2の区切り、2文字目がファイル2とファイル3の区切り……となります。
コマンド実行例
paste -d , ファイル1 ファイル2 ファイル3
(「,」で区切って連結する)
paste -d ,: ファイル1 ファイル2 ファイル3
(「,」と「:」で区切って連結する)(画面2)
出力する項目を指定する
pasteコマンドは単純に行単位に貼り付けるだけで、「join」コマンド(本連載第100回参照)のように出力項目を指定することはできません。
連結するテキストファイルがタブや「,」などで区切られている場合は、「cut」コマンド(本連載第60回参照)を使って必要な項目だけ切り出すとよいでしょう。
例えば、以下の画面3では、各項目がタブで区切られているテキストファイル「list1-1.txt」「list1-2.txt」「list1-3.txt」を連結し(画面1参照)、cutコマンドで2番目、4番目、5番目の項目を出力しています。
筆者紹介
西村 めぐみ(にしむら めぐみ)
PC-9801NからのDOSユーザー(LinuxはPC-486DXから)。1992年より生産管理のパッケージソフトウェアの開発およびサポート業務を担当。のち退社し、ライターとして活動。著書に『図解でわかるLinux』『らぶらぶLinuxシリーズ』『はじめてでもわかるSQLとデータ設計』『シェルの基本テクニック』など。2011年より、地方自治体の在宅就業支援事業にてPC基礎およびMicrosoft Office関連の教材作成およびeラーニング指導を担当。
Copyright © ITmedia, Inc. All Rights Reserved.