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.
-t $'\t'the-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-escapedt.-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.