xref: /freebsd/usr.bin/paste/paste.1 (revision 397e83df75e0fcd0d3fcb95ae4d794cb7600fc89)
1.\" Copyright (c) 1989, 1990, 1993
2.\"	The Regents of the University of California.  All rights reserved.
3.\"
4.\" This code is derived from software contributed to Berkeley by
5.\" Adam S. Moskowitz and the Institute of Electrical and Electronics
6.\" Engineers, Inc.
7.\"
8.\" Redistribution and use in source and binary forms, with or without
9.\" modification, are permitted provided that the following conditions
10.\" are met:
11.\" 1. Redistributions of source code must retain the above copyright
12.\"    notice, this list of conditions and the following disclaimer.
13.\" 2. Redistributions in binary form must reproduce the above copyright
14.\"    notice, this list of conditions and the following disclaimer in the
15.\"    documentation and/or other materials provided with the distribution.
16.\" 3. Neither the name of the University nor the names of its contributors
17.\"    may be used to endorse or promote products derived from this software
18.\"    without specific prior written permission.
19.\"
20.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
21.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
23.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
24.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
25.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
26.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
27.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
28.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
29.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
30.\" SUCH DAMAGE.
31.\"
32.Dd November 6, 2022
33.Dt PASTE 1
34.Os
35.Sh NAME
36.Nm paste
37.Nd merge corresponding or subsequent lines of files
38.Sh SYNOPSIS
39.Nm
40.Op Fl s
41.Op Fl d Ar list
42.Ar
43.Sh DESCRIPTION
44The
45.Nm
46utility concatenates the corresponding lines of the given input files,
47replacing all but the last file's newline characters with a single tab
48character, and writes the resulting lines to standard output.
49If end-of-file is reached on an input file while other input files
50still contain data, the file is treated as if it were an endless source
51of empty lines.
52.Pp
53The options are as follows:
54.Bl -tag -width Fl
55.It Fl d Ar list
56Use one or more of the provided characters to replace the newline
57characters instead of the default tab.
58The characters in
59.Ar list
60are used circularly, i.e., when
61.Ar list
62is exhausted the first character from
63.Ar list
64is reused.
65This continues until a line from the last input file (in default operation)
66or the last line in each file (using the
67.Fl s
68option) is displayed, at which
69time
70.Nm
71begins selecting characters from the beginning of
72.Ar list
73again.
74.Pp
75The following special characters can also be used in list:
76.Pp
77.Bl -tag -width flag -compact
78.It Li \en
79newline character
80.It Li \et
81tab character
82.It Li \e\e
83backslash character
84.It Li \e0
85Empty string (not a null character).
86.El
87.Pp
88Any other character preceded by a backslash is equivalent to the
89character itself.
90.It Fl s
91Concatenate all of the lines of each separate input file in command line
92order.
93The newline character of every line except the last line in each input
94file is replaced with the tab character, unless otherwise specified by
95the
96.Fl d
97option.
98.El
99.Pp
100If
101.Sq Fl
102is specified for one or more of the input files, the standard
103input is used; standard input is read one line at a time, circularly,
104for each instance of
105.Sq Fl .
106.Sh EXIT STATUS
107.Ex -std
108.Sh EXAMPLES
109List the files in the current directory in three columns:
110.Pp
111.Dl "ls | paste - - -"
112.Pp
113Combine pairs of lines from a file into single lines:
114.Pp
115.Dl "paste -s -d '\et\en' myfile"
116.Pp
117Number the lines in a file, similar to
118.Xr nl 1 :
119.Pp
120.Dl "sed = myfile | paste - -"
121.Pp
122Create a colon-separated list of directories named
123.Pa bin ,
124suitable
125for use in the
126.Ev PATH
127environment variable:
128.Pp
129.Dl "find / -name bin -type d | paste -s -d : -"
130.Sh SEE ALSO
131.Xr cut 1 ,
132.Xr lam 1
133.Sh STANDARDS
134The
135.Nm
136utility is expected to be
137.St -p1003.2
138compatible.
139.Sh HISTORY
140A
141.Nm
142command first appeared in
143.At III
144and has been available since
145.Bx 4.3 Reno .
146.Sh AUTHORS
147.An -nosplit
148The original Bell Labs version was written by
149.An Gottfried W. R. Luderer
150and the
151.Bx
152version by
153.An Adam S. Moskowitz
154and
155.An Marciano Pitargue .
156