123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148 |
- .TH JOIN 1
- .CT 1 files
- .SH NAME
- join \- relational database operator
- .SH SYNOPSIS
- .B join
- [
- .I options
- ]
- .I file1 file2
- .SH DESCRIPTION
- .I Join
- forms, on the standard output,
- a join
- of the two relations specified by the lines of
- .I file1
- and
- .IR file2 .
- If one of the file names is
- .LR - ,
- the standard input is used.
- .PP
- .I File1
- and
- .I file2
- must be sorted in increasing
- .SM ASCII
- collating
- sequence on the fields
- on which they are to be joined,
- normally the first in each line.
- .PP
- There is one line in the output
- for each pair of lines in
- .I file1
- and
- .I file2
- that have identical join fields.
- The output line normally consists of the common field,
- then the rest of the line from
- .IR file1 ,
- then the rest of the line from
- .IR file2 .
- .PP
- Input fields are normally separated spaces or tabs;
- output fields by space.
- In this case, multiple separators count as one, and
- leading separators are discarded.
- .PP
- The following options are recognized, with POSIX syntax.
- .TP
- .BI -a " n
- In addition to the normal output,
- produce a line for each unpairable line in file
- .IR n ,
- where
- .I n
- is 1 or 2.
- .TP
- .BI -v " n
- Like
- .BR -a ,
- omitting output for paired lines.
- .TP
- .BI -e " s
- Replace empty output fields by string
- .IR s .
- .TP
- .BI -1 " m
- .br
- .ns
- .TP
- .BI -2 " m
- Join on the
- .IR m th
- field of
- .I file1
- or
- .IR file2 .
- .TP
- .BI -j "n m"
- Archaic equivalent for
- .BI - n " m"\f1.
- .TP
- .BI -o fields
- Each output line comprises the designated fields.
- The comma-separated field designators are either
- .BR 0 ,
- meaning the join field, or have the form
- .IR n . m ,
- where
- .I n
- is a file number and
- .I m
- is a field number.
- Archaic usage allows separate arguments for field designators.
- .PP
- .TP
- .BI -t c
- Use character
- .I c
- as the only separator (tab character) on input and output.
- Every appearance of
- .I c
- in a line is significant.
- .SH EXAMPLES
- .TP
- .L
- sort -t: +1 /adm/users | join -t: -1 2 -a 1 -e "" - bdays
- Add birthdays to the
- .B /adm/users
- file, leaving unknown
- birthdays empty.
- The layout of
- .B /adm/users
- is given in
- .IR users (6);
- .B bdays
- contains sorted lines like
- .LR "ken:Feb\ 4,\ 1953" .
- .TP
- .L
- tr : ' ' </adm/users | sort -k 3 3 >temp
- .br
- .ns
- .TP
- .L
- join -1 3 -2 3 -o 1.1,2.1 temp temp | awk '$1 < $2'
- Print all pairs of users with identical userids.
- .SH SOURCE
- .B /sys/src/cmd/join.c
- .SH "SEE ALSO"
- .IR sort (1),
- .IR comm (1),
- .IR awk (1)
- .SH BUGS
- With default field separation,
- the collating sequence is that of
- .BI "sort -b"
- .BI -k y , y\f1;
- with
- .BR -t ,
- the sequence is that of
- .BI "sort -t" x
- .BI -k y , y\f1.
- .br
- One of the files must be randomly accessible.
|