Linux join command
On Unix-like operating systems, the join command joins the lines of two files which share a common field of data.
join [OPTION]... FILE1 FILE2
For each pair of input lines with identical join fields, write a line to standard output. The default join field is the first, delimited by whitespace. When FILE1 or FILE2 (not both) is -, read standard input.
|-a FILENUM||Also, print unpairable lines from file FILENUM, where FILENUM is 1 or 2, corresponding to FILE1 or FILE2.|
|-e EMPTY||Replace missing input fields with EMPTY.|
|-i, --ignore-case||Ignore differences in case when comparing fields.|
|-j FIELD||Equivalent to "-1 FIELD -2 FIELD".|
|-o FORMAT||Obey FORMAT while constructing output line.|
|-t CHAR||Use CHAR as input and output field separator.|
|-v FILENUM||Like -a FILENUM, but suppress joined output lines.|
|-1 FIELD||Join on this FIELD of file 1.|
|-2 FIELD||Join on this FIELD of file 2.|
|--check-order||Check that the input is correctly sorted, even if all input lines are pairable.|
|--nocheck-order||Do not check that the input is correctly sorted.|
|--header||Treat the first line in each file as field headers, print them without trying to pair them.|
|--help||Display a help message and exit.|
|--version||Display version information and exit.|
Unless -t CHAR is given, fields are separated by leading blank spaces; otherwise, fields are separated by CHAR. Any FIELD is a field number counted from 1.
If FORMAT is the keyword auto, then the first line of each file determines the number of fields output for each line.
FILE1 and FILE2 must be sorted on the join fields. The sort command can accomplish this. If the input is not sorted and some lines cannot be joined, a warning message will be given.
If we have a file, myfile1.txt, whose contents are:
1 India 2 US 3 Ireland 4 UK 5 Canada
...and another file, myfile2.txt, whose contents are:
1 NewDelhi 2 Washington 3 Dublin 4 London 5 Toronto
The common fields are the fields which begin with the same number. We can join the contents using the following command:
join myfile1.txt myfile2.txt
...which outputs the following to standard output:
1 India NewDelhi 2 US Washington 3 Ireland Dublin 4 UK London 5 Canada Toronto
If we wanted to create a new file with the joined contents, we could use the following command:
join myfile1.txt myfile2.txt > myjoinedfile.txt
...which directs the output into a new file called myjoinedfile.txt, containing the same output as the example above.