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.

  • Syntax
  • Examples
  • Related commands
  • Linux commands help

Options

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.