Linux comes equipped with a handy utility aptly called
join which performs join operations on text files.
Performing an inner join is as simple as running
join file1.txt file2.txt
Producing an outer join can be a bit more verbose. The following command is an example of an outer join.
join -t $'\t' -o 0,1.2,2.2 -a 1 -a 2 file1.txt file2.txt
Let’s break that down a bit.
-tindicates to join what character to use as the field-separator. In this example, the leading
$allows us to pass the tab character, instead of just a backslash-escaped
-o 0,1.2,2.2specifies the fields to output. In this example, we want the joined field 0, then the second field fromm file 1, then the second field from file 2.
-a 1 -a 2specifies that we want to join all the fields from file 1 and all the fields from file 2.