paste - Joins corresponding lines of several files or subsequent lines in
paste [-d list] [-s] file...
Interfaces documented on this reference page conform to industry standards
Refer to the standards(5) reference page for more information about indus-
try standards and associated tags.
Replaces the delimiter that separates lines in the output (tab by
default) with one or more characters from list. If list contains more
than one character, then the characters are repeated in order until the
end of the output. In parallel merging, the lines from the last file
always end with a newline character, instead of one from list.
The following special characters can be used in list:
\n Newline character
\0 Empty string (not a null character)
c [Tru64 UNIX] An extended character
You must quote characters that have special meaning to the shell.
-s Merges all lines from each input file into one line of output (serial
merging). Using this option, the paste command merges all lines in the
first input file forcing a newline before at the end. The command then
continues with the next input file, continuing in the same manner until
all input files have been completed. A tab separates the input lines
unless you use the -d option. Regardless of the list, the last charac-
ter of the output is a newline character.
The name of an input file. You may specify up to 12 files, including
If you specify a -, paste reads standard input recursively, one line
for each -.
Specifying the -d option or no options causes the paste command to treat
each file as a column, joining them horizontally with a tab character by
default (parallel merging).
Using the -s option, the paste command combines all lines of each input
file into one output line (serial merging). These lines are joined with
the tab character by default.
Output lines can be any length.
[Tru64 UNIX] The output of pr -t -m is similar to the output produced by
the paste command, but pr with its options creates extra spaces, tabs, and
lines for an enhanced page layout.
If the -s option is not used, it is an error if any specified file cannot
The following exit values are returned:
0 Successful completion.
>>0 An error occurred.
1. To paste several columns of data together, enter:
paste names places dates >> npd
This creates a file named npd that contains the data from names in one
column, places in another, and dates in a third. The columns are
separated by tab characters.
File npd then contains:
rachel New York 28 February
jerzy Warsaw 27 April
mata Nairobi 21 June
michel Boca Raton 27 July
segui Managua 18 November
A tab character separates the name, place, and date on each line.
2. To separate the columns with a character other than a tab (sh only),
paste -d"!@" names places dates >> npd
This alternates the apostrophe (!) and the at sign (@) as the column
separators. If names, places, and dates are the same as in Example 1,
then npd contains:
rachel!New York@28 February
michel!Boca Raton@27 July
3. To display the standard input in multiple columns, enter:
ls | paste - - - -
This lists the current directory in four columns. Each hyphen (-)
tells the paste command to create a column containing data read from
the standard input. The first line is put in the first column, the
second line in the second column, ... and then the fifth line in the
first column, and so on.
This is equivalent to
ls | paste -d"\t\t\t\n" -s -
which fills the columns across the page with subsequent lines from the
standard input. The -d\t\t\t\n defines the character to insert after
each column: a tab character (\t) after the first three columns, and a
newline character (\n) after the fourth. Without the -d option, paste
-s - displays all of the input as one line with a tab between each
4. To merge the lines of the file names above into one output line,
paste -s names
This results in:
rachel jerzy mata michel segui
The following environment variables affect the execution of paste:
Provides a default value for the internationalization variables that
are unset or null. If LANG is unset or null, the corresponding value
from the default locale is used. If any of the internationalization
variables contain an invalid setting, the utility behaves as if none of
the variables had been defined.
If set to a non-empty string value, overrides the values of all the
other internationalization variables.
Determines the locale for the interpretation of sequences of bytes of
text data as characters (for example, single-byte as opposed to multi-
byte characters in arguments and input files).
Determines the locale for the format and contents of diagnostic mes-
sages written to standard error.
Determines the location of message catalogues for the processing of
Commands: cut(1), grep(1), fold(1), join(1), pr(1)