`join': Join lines on a common field
====================================
`join' writes to standard output a line for each pair of input lines
that have identical join fields. Synopsis:
join [OPTION]... FILE1 FILE2
Either FILE1 or FILE2 (but not both) can be `-', meaning standard
input. FILE1 and FILE2 should be already sorted in increasing textual
order on the join fields, using the collating sequence specified by the
`LC_COLLATE' locale. Unless the `-t' option is given, the input should
be sorted ignoring blanks at the start of the join field, as in `sort
-b'. If the `--ignore-case' option is given, lines should be sorted
without regard to the case of characters in the join field, as in `sort
-f'.
The defaults are: the join field is the first field in each line;
fields in the input are separated by one or more blanks, with leading
blanks on the line ignored; fields in the output are separated by a
space; each output line consists of the join field, the remaining
fields from FILE1, then the remaining fields from FILE2.
The program accepts the following options. Also see Note:Common
options.
`-a FILE-NUMBER'
Print a line for each unpairable line in file FILE-NUMBER (either
`1' or `2'), in addition to the normal output.
`-e STRING'
Replace those output fields that are missing in the input with
STRING.
`-i'
`--ignore-case'
Ignore differences in case when comparing keys. With this option,
the lines of the input files must be ordered in the same way. Use
`sort -f' to produce this ordering.
`-1 FIELD'
`-j1 FIELD'
Join on field FIELD (a positive integer) of file 1.
`-2 FIELD'
`-j2 FIELD'
Join on field FIELD (a positive integer) of file 2.
`-j FIELD'
Equivalent to `-1 FIELD -2 FIELD'.
`-n'
Use numerical order when joining FILE1 and FILE2. They must be
sorted numerically beforehand.
`-o FIELD-LIST...'
Construct each output line according to the format in FIELD-LIST.
Each element in FIELD-LIST is either the single character `0' or
has the form M.N where the file number, M, is `1' or `2' and N is
a positive field number.
A field specification of `0' denotes the join field. In most
cases, the functionality of the `0' field spec may be reproduced
using the explicit M.N that corresponds to the join field.
However, when printing unpairable lines (using either of the `-a'
or `-v' options), there is no way to specify the join field using
M.N in FIELD-LIST if there are unpairable lines in both files. To
give `join' that functionality, POSIX invented the `0' field
specification notation.
The elements in FIELD-LIST are separated by commas or blanks.
Multiple FIELD-LIST arguments can be given after a single `-o'
option; the values of all lists given with `-o' are concatenated
together. All output lines - including those printed because of
any -a or -v option - are subject to the specified FIELD-LIST.
`-t CHAR'
Use character CHAR as the input and output field separator.
`-v FILE-NUMBER'
Print a line for each unpairable line in file FILE-NUMBER (either
`1' or `2'), instead of the normal output.
In addition, when GNU `join' is invoked with exactly one argument,
options `--help' and `--version' are recognized. Note:Common
options.