p The default field separators are tab and space characters. In this case, multiple tabs and spaces count as a single field separator, and leading tabs and spaces are ignored. The default output field separator is a single space character.
p Many of the options use file and field numbers. Both file numbers and field numbers are 1 based, i.e. the first file on the command line is file number 1 and the first field is field number 1. The following options are available: l -tag -width Fl t Fl a Ar file_number In addition to the default output, produce a line for each unpairable line in file .Ar file_number . (The argument to .Fl a must not be preceded by a space; see the .Sx COMPATIBILITY section.) t Fl e Ar string Replace empty output fields with .Ar string . t Fl o Ar list The .Fl o option specifies the fields that will be output from each file for each line with matching join fields. Each element of .Ar list has the form .Ql file_number.field , where .Ar file_number is a file number and .Ar field is a field number. The elements of list must be either comma (``,'') or whitespace separated. (The latter requires quoting to protect it from the shell, or, a simpler approach is to use multiple .Fl o options.) t Fl t Ar char Use character .Ar char as a field delimiter for both input and output. Every occurrence of .Ar char in a line is significant. t Fl v Ar file_number Do not display the default output, but display a line for each unpairable line in file .Ar file_number . The options .Fl v Ar 1 and .Fl v Ar 2 may be specified at the same time. t Fl 1 Ar field Join on the .Ar field Ns 'th field of file 1. t Fl 2 Ar field Join on the .Ar field Ns 'th field of file 2. .El
p When the default field delimiter characters are used, the files to be joined should be ordered in the collating sequence of .Xr sort 1 , using the .Fl b option, on the fields on which they are to be joined, otherwise .Nm may not report all field matches. When the field delimiter characters are specified by the .Fl t option, the collating sequence should be the same as .Xr sort 1 without the .Fl b option.
p If one of the arguments .Ar file1 or .Ar file2 is ``-'', the standard input is used. .Sh EXIT STATUS .Ex -std join .Sh COMPATIBILITY For compatibility with historic versions of .Nm , the following options are available: l -tag -width Fl t Fl a In addition to the default output, produce a line for each unpairable line in both file 1 and file 2. (To distinguish between this and .Fl a Ar file_number , .Nm currently requires that the latter not include any white space.) t Fl j1 Ar field Join on the .Ar field Ns 'th field of file 1. t Fl j2 Ar field Join on the .Ar field Ns 'th field of file 2. t Fl j Ar field Join on the .Ar field Ns 'th field of both file 1 and file 2. t Fl o Ar list ... Historical implementations of .Nm permitted multiple arguments to the .Fl o option. These arguments were of the form ``file_number.field_number'' as described for the current .Fl o option. This has obvious difficulties in the presence of files named ``1.2''. .El
p These options are available only so historic shell scripts don't require modification and should not be used. .Sh SEE ALSO .Xr awk 1 , .Xr comm 1 , .Xr paste 1 , .Xr sort 1 , .Xr uniq 1 .Sh STANDARDS The .Nm command is expected to be .St -p1003.2 compatible.