[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

8.2 paste: 複数のファイルの各行をマージする

paste は、指定された各ファイルの行番号が同じ行を、 タブ文字を間にはさんで連結して、標準出力に書き出す。 入力ファイルが全く指定されていない場合や、ファイル名が ‘-’ だった場合は、 標準入力が使用される。

書式:

 
paste [option]… [file]…

たとえば、次のような 2 個のファイルに対して、

 
$ cat num2
1
2
$ cat let3
a
b
c

各ファイルから行を順番に拾う。

 
$ paste num2 let3
1       a
2       b
        c

片方のファイルの行を二回使う。

 
$ paste num2 let3 num2
1       a      1
2       b      2
        c

標準入力から行を取得して混ぜる。

 
$ paste - let3 - < num2
1       a      2
        b
        c

連続する行を、スペースを間にはさんで結合する。

 
$ seq 4 | paste -d ' ' - -
1 2
3 4

このプログラムでは以下のオプションが使用できる。参照: 共通オプション.

-s
--serial

各ファイルから 1 行づつ取り出して連結するのではなく、 一つのファイルのすべての行をまとめて 1 行に連結する。 上の例のデータを使用すると、

 
$ paste -s num2 let3
1       2
a       b       c
-d delim-list
--delimiters=delim-list

連結する行の区切りに、タブではなく、delim-list の各文字を順番に使用する。 delim-list を使い切ってしまった場合は、最初の文字に戻って使用して行く。 上記のデータを例に取ると、

 
$ paste -d '%_' num2 let3 num2
1%a_1
2%b_2
%c_
-z
--zero-terminated

項目の区切りに、改行 (ASCII LF) ではなく、ゼロバイトを使用する。 すなわち、入力を ASCII NUL で分離された項目として扱い、出力する各項目の末尾に ASCII NUL を付加する。このオプションは、‘perl -0’, ‘find -print0’, ‘xargs -0’ などと組み合わせて使用すると、 便利なことがある。そうしたコマンドでも、わがままなファイル名を (空白などの特殊文字を含んでいる場合でも) きちんと確実に処理するために、 同様なことをしているのである。

終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

This document was generated on June 7, 2022 using texi2html 1.82.