NAME
paste — merge
corresponding or subsequent lines of files
SYNOPSIS
paste |
[-s] [-d
list] file
... |
DESCRIPTION
The paste utility shall concatenate the
corresponding lines of the given input files, and write the resulting lines
to standard output. The default operation of paste
shall concatenate the corresponding lines of the input files. The
<newline> character of every line except the line from the last input
file shall be replaced with a <tab> character. If an end-of-file
condition is detected on one or more input files, but not all input files,
paste shall behave as though empty lines were read
from the file(s) on which end-of-file was detected, unless the −s
option is specified.
OPTIONS
The paste utility shall conform to the
utility argument syntax guidelines described in 2.10.2. The following
options shall be supported by the implementation:
-dlist-
Unless a backslash character appears in list, each character in list is an element specifying a delimiter character. If a backslash character appears in list, the backslash character and one or more characters following it are an element specifying a delimiter character as described below. These elements specify one or more
delimiters to use, instead of the default <tab>, to replace the <newline> character of the input lines. The elements in list shall be used circularly; i.e., when the list is exhausted the first element from the list shall be re-used. When the −s option is specified:
- The last <newline> character in a file shall not be modified.
- The delimiter shall be reset to the first element of list after each file operand is processed. When the −s option is not specified:
- The <newline> characters in the file specified by the last file operand shall not be modified.
- The delimiter shall be reset to the first element of list each time a line is processed from each file. If a backslash character appears in list, it and the character following it shall be used to represent the following delimiter characters: \n <newline> character \t <tab> character \\ backslash character \0 Empty string (not a null character). If \0 is immediately followed by the character x, the character X, or any character defined by the LC_CTYPE digit keyword (see 2.5.2.1), the results are unspecified. If any other characters follow the backslash, the results are unspecified.
-s-
Concatenate all of the lines of each separate input file in command line order. The <newline> character of every line except the last line in each input file shall be replaced with the <tab> character, unless otherwise specified by the −d option.
OPERANDS
The following operand shall be supported by the implementation:
- file
-
A pathname of an input file. If − is specified for one or more of the files, the standard input shall be used; the standard input shall be read one line at a time, circularly, for each instance of −. Implementations shall support pasting of at least 12 file operands.
STANDARD INPUT
The standard input shall be used only if one or more file operands is −. See Input Files.
INPUT FILES
The input files shall be text files, except that line lengths shall be unlimited.
ENVIRONMENT VARIABLES
The following environment variables shall affect the execution of
paste:
LANG-
This variable shall determine the locale to use for the locale categories when both LC_ALL and the corresponding environment variable (beginning with LC_ ) do not specify a locale. See 2.6.
LC_ALL-
This variable shall determine the locale to be used to override any values for locale categories specified by the settings of LANG or any environment variables beginning with LC_.
LC_CTYPE-
This variable shall determine the locale for the interpretation of sequences of bytes of text data as characters (e.g., single- versus multibyte characters in arguments and input files).
LC_MESSAGES-
This variable shall determine the language in which messages should be written.
ASYNCHRONOUS EVENTS
Default.
STANDARD OUTPUT
Concatenated lines of input files shall be separated by the <tab> character (or other characters under the control of the −d option) and terminated by a <newline> character.
STANDARD ERROR
Used only for diagnostic messages.
OUTPUT FILES
None.
EXTENDED DESCRIPTION
None.
EXIT STATUS
The paste utility shall exit with one of
the following values:
CONSEQUENCES OF ERRORS
If one or more input files cannot be opened when the −s
option is not specified, a diagnostic message shall be written to standard
error, but no output shall be written to standard output. If the −s
option is specified, the paste utility shall provide
the default behavior described in 2.11.9.
RATIONALE
EXAMPLES
When the escape sequences of the list option-argument are used in
a shell script, they must be quoted; otherwise, the shell treats the \ as a
special character. Write out a directory in four columns: ls |
paste - - - - Combine pairs of lines from a file
into single lines: paste -s -d "\t\n" file
Portable applications should only use the specific backslash escaped
delimiters presented in this standard. Historical implementations treat \x,
where x is not in this list, as x, but future implementations are free to
expand this list to recognize other common escapes similar to those accepted
by printf and other standard utilities. Most of the standard utilities work
on text files. The cut utility can be used to turn files with arbitrary line
lengths into a set of text files containing the same
data. The paste utility can
be used to create (or recreate) files with arbitrary line lengths. For
example, if file contains long lines: cut -b 1-500 -n file > file1 cut -b
501- -n file > file2 creates file1 (a text file) with lines no longer
than 500 bytes (plus the <newline> character) and file2 that contains
the remainder of the data from file. (Note that file2 will not be a text
file if there are lines in file that are longer than 500 +
LINE_MAX bytes.)
The original file can be recreated from file1 and file2 using the command:
paste -d "\0" file1 file2 > file The
commands
paste -d "\0" . . .
paste -d "" . . .
are not necessarily equivalent; the latter is not
specified by POSIX.
2 and may result in an error. The construct \0 is used to mean
‘‘no separator’’ because historical versions of
paste did not follow the syntax guidelines and the
command
paste -d"" . . .
could not be handled properly by
getopt().
HISTORY OF DECISIONS MADE
Because most of the standards utilities work on text files, cut
and paste are required to process lines of arbitrary
length as a means of converting long lines from arbitrary sources into text
files and converting processed text files back into files with arbitrary
line lengths to interface with those applications that require long lines as
input.