Paste (Unix)


paste is a shell command that joins files horizontally by writing to standard output lines consisting of the sequentially corresponding lines of each input file, separated by tabs.
The command reads each specified input file line-by-line. For each set of input lines, the command outputs a line formatted as the concatenation of the input files' lines separated by a tab character. If the content of a file runs out, the command will use an empty string for the file. As such, the number of output lines will equal the number of lines of the file with the most lines. Some implementations support using a fixed string when a files content is exhausted before the others.
A sequence of empty records at the bottom of a column of the output stream may or may not have been present in the input file corresponding to that column as explicit empty records, unless you know the input file supplied all rows explicitly.
The command accepts the following options:
The command was developed for Unix at Bell Labs by Gottfried W. R. Luderer. The implementation bundled in GNU coreutils was written by David M. Ihnat and David MacKenzie. The command is available for Windows via UnxUtils.

Examples

For the following examples, is a plain-text file that contains:
Mark Smith
Bobby Brown
Sue Miller
Jenny Igotit
is another plain-text file that contains:
555-1234
555-9876
555-6743
867-5309
The following command joins the two files.

$ paste names.txt numbers.txt
Mark Smith 555-1234
Bobby Brown 555-9876
Sue Miller 555-6743
Jenny Igotit 867-5309

When invoked with the option, the files are joined horizontally:
$ paste --serial names.txt numbers.txt
Mark Smith Bobby Brown Sue Miller Jenny Igotit
555-1234 555-9876 555-6734 867-5309

The use of the option is illustrated in the following example:
$ paste --delimiters. names.txt numbers.txt
Mark Smith.555-1234
Bobby Brown.555-9876
Sue Miller.555-6743
Jenny Igotit.867-5309

Sum the numbers from 1 to 100:
$ seq 1 100 | paste -d + -s | bc
5050