1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
|
paste(P) paste(P)
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> of
every line except the line from the last input file
shall be replaced with a <tab>.
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 files on which
end-of-file was detected, unless the -s option is speci-
fied.
OPTIONS
The paste utility shall conform to the Base Definitions
volume of IEEE Std 1003.1-2001, Section 12.2, Utility
Syntax Guidelines.
The following options shall be supported:
-d list
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 delim-
iters to use, instead of the default <tab>, to
replace the <newline> of the input lines. The
elements in list shall be used circularly; that
is, when the list is exhausted the first element
from the list is reused. When the -s option is
specified:
The last <newline> in a file shall not be modi-
fied.
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>s 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>.
\t <tab>.
\\ 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 the Base Definitions
volume of IEEE Std 1003.1-2001, Chapter 7,
Locale), 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>
of every line except the last line in each input
file shall be replaced with the <tab>, unless
otherwise specified by the -d option.
OPERANDS
The following operand shall be supported:
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.
STDIN
The standard input shall be used only if one or more
file operands is '-' . See the INPUT FILES section.
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 Provide a default value for the internationaliza-
tion variables that are unset or null. (See the
Base Definitions volume of IEEE Std 1003.1-2001,
Section 8.2, Internationalization Variables for
the precedence of internationalization variables
used to determine the values of locale cate-
gories.)
LC_ALL If set to a non-empty string value, override the
values of all the other internationalization
variables.
LC_CTYPE
Determine 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).
LC_MESSAGES
Determine the locale that should be used to
affect the format and contents of diagnostic mes-
sages written to standard error.
NLSPATH
Determine the location of message catalogs for
the processing of LC_MESSAGES .
ASYNCHRONOUS EVENTS
Default.
STDOUT
Concatenated lines of input files shall be separated by
the <tab> (or other characters under the control of the
-d option) and terminated by a <newline>.
STDERR
The standard error shall be used only for diagnostic
messages.
OUTPUT FILES
None.
EXTENDED DESCRIPTION
None.
EXIT STATUS
The following exit values shall be returned:
0 Successful completion.
>0 An error occurred.
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 is written to
standard output. If the -s option is specified, the
paste utility shall provide the default behavior
described in Utility Description Defaults .
The following sections are informative.
APPLICATION USAGE
When the escape sequences of the list option-argument
are used in a shell script, they must be quoted; other-
wise, the shell treats the '\' as a special character.
Conforming applications should only use the specific
backslash escaped delimiters presented in this volume of
IEEE Std 1003.1-2001. 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 exam-
ple, 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>) and file2 that contains
the remainder of the data from file. Note that file2 is
not 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 speci-
fied by this volume of IEEE Std 1003.1-2001 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().
EXAMPLES
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
RATIONALE
None.
FUTURE DIRECTIONS
None.
SEE ALSO
Utility Description Defaults , cut , grep , pr
COPYRIGHT
Portions of this text are reprinted and reproduced in
electronic form from IEEE Std 1003.1, 2003 Edition,
Standard for Information Technology -- Portable Operat-
ing System Interface (POSIX), The Open Group Base Speci-
fications Issue 6, Copyright (C) 2001-2003 by the Insti-
tute of Electrical and Electronics Engineers, Inc and
The Open Group. In the event of any discrepancy between
this version and the original IEEE and The Open Group
Standard, the original IEEE and The Open Group Standard
is the referee document. The original Standard can be
obtained online at http://www.open-
group.org/unix/online.html .
POSIX 2003 paste(P)
|