Annotation of src/usr.bin/join/join.1, Revision 1.3
1.3 ! michaels 1: .\" Copyright (c) 1990, 1993
! 2: .\" The Regents of the University of California. All rights reserved.
1.1 deraadt 3: .\"
4: .\" This code is derived from software contributed to Berkeley by
5: .\" the Institute of Electrical and Electronics Engineers, Inc.
6: .\"
7: .\" Redistribution and use in source and binary forms, with or without
8: .\" modification, are permitted provided that the following conditions
9: .\" are met:
10: .\" 1. Redistributions of source code must retain the above copyright
11: .\" notice, this list of conditions and the following disclaimer.
12: .\" 2. Redistributions in binary form must reproduce the above copyright
13: .\" notice, this list of conditions and the following disclaimer in the
14: .\" documentation and/or other materials provided with the distribution.
15: .\" 3. All advertising materials mentioning features or use of this software
16: .\" must display the following acknowledgement:
17: .\" This product includes software developed by the University of
18: .\" California, Berkeley and its contributors.
19: .\" 4. Neither the name of the University nor the names of its contributors
20: .\" may be used to endorse or promote products derived from this software
21: .\" without specific prior written permission.
22: .\"
23: .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
24: .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
25: .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
26: .\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
27: .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
28: .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
29: .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
30: .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
31: .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
32: .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
33: .\" SUCH DAMAGE.
34: .\"
1.3 ! michaels 35: .\" @(#)join.1 8.3 (Berkeley) 4/28/95
1.1 deraadt 36: .\"
1.3 ! michaels 37: .Dd April 28, 1995
1.1 deraadt 38: .Dt JOIN 1
39: .Os
40: .Sh NAME
41: .Nm join
42: .Nd relational database operator
43: .Sh SYNOPSIS
44: .Nm join
45: .Oo
46: .Fl a Ar file_number | Fl v Ar file_number
47: .Oc
48: .Op Fl e Ar string
49: .Op Fl j Ar file_number field
50: .Op Fl o Ar list
51: .Bk -words
52: .Ek
53: .Op Fl t Ar char
54: .Op Fl \&1 Ar field
55: .Op Fl \&2 Ar field
56: .Ar file1
57: .Ar file2
58: .Sh DESCRIPTION
59: The join utility performs an ``equality join'' on the specified files
60: and writes the result to the standard output.
61: The ``join field'' is the field in each file by which the files are compared.
62: The first field in each line is used by default.
63: There is one line in the output for each pair of lines in
64: .Ar file1
65: and
66: .Ar file2
67: which have identical join fields.
1.3 ! michaels 68: Each output line consists of the join field, the other fields from
1.1 deraadt 69: .Ar file1
1.3 ! michaels 70: and then the other fields from
1.1 deraadt 71: .Ar file2 .
72: .Pp
73: The default field separators are tab and space characters.
74: In this case, multiple tabs and spaces count as a single field separator,
75: and leading tabs and spaces are ignored.
76: The default output field separator is a single space character.
77: .Pp
78: Many of the options use file and field numbers.
79: Both file numbers and field numbers are 1 based, i.e. the first file on
80: the command line is file number 1 and the first field is field number 1.
81: The following options are available:
82: .Bl -tag -width Fl
83: .It Fl a Ar file_number
84: In addition to the default output, produce a line for each unpairable
85: line in file
86: .Ar file_number .
1.3 ! michaels 87: (The argument to
! 88: .Fl a
! 89: must not be preceded by a space; see the
! 90: .Sx COMPATIBILITY
! 91: section.)
1.1 deraadt 92: .It Fl e Ar string
93: Replace empty output fields with
94: .Ar string .
95: .It Fl o Ar list
96: The
97: .Fl o
98: option specifies the fields that will be output from each file for
99: each line with matching join fields.
100: Each element of
101: .Ar list
102: has the form
103: .Ql file_number.field ,
104: where
105: .Ar file_number
106: is a file number and
107: .Ar field
108: is a field number.
109: The elements of list must be either comma (``,'') or whitespace separated.
1.3 ! michaels 110: (The latter requires quoting to protect it from the shell, or, a simpler
1.1 deraadt 111: approach is to use multiple
112: .Fl o
113: options.)
114: .It Fl t Ar char
115: Use character
116: .Ar char
117: as a field delimiter for both input and output.
118: Every occurrence of
119: .Ar char
120: in a line is significant.
121: .It Fl v Ar file_number
122: Do not display the default output, but display a line for each unpairable
123: line in file
124: .Ar file_number .
125: The options
126: .Fl v Ar 1
127: and
128: .Fl v Ar 2
129: may be specified at the same time.
130: .It Fl 1 Ar field
131: Join on the
132: .Ar field Ns 'th
133: field of file 1.
134: .It Fl 2 Ar field
135: Join on the
136: .Ar field Ns 'th
137: field of file 2.
138: .El
139: .Pp
140: When the default field delimiter characters are used, the files to be joined
141: should be ordered in the collating sequence of
142: .Xr sort 1 ,
143: using the
144: .Fl b
145: option, on the fields on which they are to be joined, otherwise
146: .Nm join
147: may not report all field matches.
148: When the field delimiter characters are specified by the
149: .Fl t
150: option, the collating sequence should be the same as
151: .Xr sort
152: without the
153: .Fl b
154: option.
155: .Pp
156: If one of the arguments
157: .Ar file1
158: or
159: .Ar file2
160: is ``-'', the standard input is used.
161: .Pp
162: The
163: .Nm join
164: utility exits 0 on success, and >0 if an error occurs.
165: .Sh COMPATIBILITY
166: For compatibility with historic versions of
167: .Nm join ,
168: the following options are available:
169: .Bl -tag -width Fl
170: .It Fl a
171: In addition to the default output, produce a line for each unpairable line
172: in both file 1 and file 2.
1.3 ! michaels 173: (To distinguish between this and
! 174: .Fl a Ar file_number ,
! 175: .Nm join
! 176: currently requires that the latter not include any white space.)
1.1 deraadt 177: .It Fl j1 Ar field
178: Join on the
179: .Ar field Ns 'th
180: field of file 1.
181: .It Fl j2 Ar field
182: Join on the
183: .Ar field Ns 'th
184: field of file 2.
185: .It Fl j Ar field
186: Join on the
187: .Ar field Ns 'th
188: field of both file 1 and file 2.
189: .It Fl o Ar list ...
190: Historical implementations of
191: .Nm join
192: permitted multiple arguments to the
193: .Fl o
194: option.
195: These arguments were of the form ``file_number.field_number'' as described
196: for the current
197: .Fl o
198: option.
199: This has obvious difficulties in the presence of files named ``1.2''.
200: .El
201: .Pp
202: These options are available only so historic shellscripts don't require
203: modification and should not be used.
204: .Sh STANDARDS
205: The
206: .Nm join
207: command is expected to be
208: .St -p1003.2
209: compatible.
210: .Sh SEE ALSO
211: .Xr awk 1 ,
212: .Xr comm 1 ,
213: .Xr paste 1 ,
214: .Xr sort 1 ,
215: .Xr uniq 1