Linux join command

Updated: 05/04/2019 by Computer Hope
join command

On Unix-like operating systems, the join command joins the lines of two files which share a common field of data.

This page covers the GNU/Linux version of join.

Syntax

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.

Options

-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.

Examples

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.

comm — Compare two sorted files line by line.
sort — Sort the lines in a text file.
uniq — Identify, and optionally filter out, repeated lines in a file.