paste コマンドは、複数のファイルや標準入力からの行を結合して、横に並べて出力するためのコマンドです。主にデータの統合や複数のカラムを並べて表示する際に使用されます。GNU coreutils に含まれており、Linux では GNU 版が、FreeBSD では BSD 版が提供されています。基本的な動作は共通していますが、細かなオプションの違いがあります。

基本的な使い方

編集
paste [オプション] [ファイル...]

主なオプション(GNU coreutils版)

編集
主なオプション
オプション 説明
-d, --delimiter=DELIM フィールドの区切り文字を指定(デフォルトはタブ)
-s, --serial ファイルの内容を縦に並べて結合
-z, --zero-terminated 出力をヌル文字で区切る
-A, --append 既存の行の後に追加する
-o, --output-delimiter=DELIM 出力時の区切り文字を指定

ファイルを横に結合(デフォルトのタブ区切り)

編集
paste file1.txt file2.txt

file1.txtfile2.txt を横に結合して表示(タブ区切りで出力)。

区切り文字を指定して結合

編集
paste -d ',' file1.txt file2.txt

file1.txtfile2.txt をカンマ区切りで結合。

縦に並べて結合

編集
paste -s file1.txt file2.txt

file1.txtfile2.txt を縦に並べて結合。

ヌル文字で区切った出力

編集
paste -z file1.txt file2.txt

出力をヌル文字で区切って表示。

出力時の区切り文字を変更

編集
paste -o ';' file1.txt file2.txt

出力時にセミコロンで区切って結合。

FreeBSD 版との違い

編集

FreeBSD でも paste コマンドは提供されていますが、GNU coreutils 版といくつか違いがあります。

主な違い:

編集
  1. -z(ヌル文字区切り)オプションが FreeBSD にはない
    • FreeBSD 版の paste には、-z オプションがないため、ヌル文字で区切られた出力を扱うことができません。
  2. -A(行追加)オプションが FreeBSD にはない
    • FreeBSD 版の paste には、-A オプションがないため、既存の行の後に追加する機能を使用できません。
  3. GNU coreutils 版を FreeBSD で使う方法
    • coreutils パッケージをインストールすると gpaste という名前で GNU 版 paste が使える。
    pkg install coreutils
    gpaste file1.txt file2.txt  # GNU coreutils 版の paste
    

詳しくは、それぞれの環境で man paste を確認してください。