paste 複数のファイルを行ごとに横に並べて結合する
paste [オプション] [ファイル...]試してみる
paste names.txt depts.txt2つのファイルの行を、タブで区切って横に並べます。
paste -d, names.txt depts.txt salaries.txt区切りをカンマにして、3つのファイルを結合します。CSVが作れます。
paste -s names.txt-s で、1つのファイルの全行を1行につなげます。
paste -sd, names.txt-s と -d の組み合わせで、全行をカンマ区切りの1行にします。
paste -d: names.txt depts.txt | cut -d: -f2結合したあと、2番目の項目を取り出します。
seq 1 6 | paste - - -標準入力を表す - を並べると、3行ずつを1行にまとめられます。
主なオプション
-d 区切り文字 | 結合の区切りを指定する(既定はタブ) |
|---|---|
-s | ファイルごとに全行を1行へつなげる |
解説
基本
paste は、複数のファイルの同じ行番号の行を、横につなげて出力します。cat が縦につなげるのに対して、paste は横につなげます。cut で取り出した列を、あとから組み合わせて、1つの表にするときに使えます。
区切り文字
既定の区切りはタブです。-d で変えられます。-d に複数の文字を渡すと、区切りごとに順番に使い、最後まで来たら先頭に戻ります。-d ',;' なら、1つ目の区切りはカンマ、2つ目はセミコロンです。
行の長さがそろわないとき
行数が少ないファイルの分は、空の項目になります。
直列にする(-s)
-s を付けると、行方向と列方向が入れ替わり、1つのファイルのすべての行が、区切りでつながった1行になります。リストをカンマ区切りの1行にするときに便利です。
join との違い
paste は、行番号が同じ行をただ並べます。共通の項目(キー)が同じ行同士を結合したいときは、join を使います。