(nota: esta resposta foi escrita antes da questão ser atualizada com o comando join
e as mensagens de erro)
o comando é chamado join
.
da página do manual:
join - join lines of two files on a common field
já que seus arquivos de entrada não estão classificados, você precisa classificá-los primeiro
join <(sort file1) <(sort file2)
as coisas <(...)
são chamadas de substituição de processos e são suportadas pelo bash e alguns outros shells. se você tem um shell que não suporta substituição de processos, então você tem que trabalhar com arquivos intermediários.
join
faz parte do gutu coreutils, então ele deve ser instalado nos sistemas mais comuns do gnu / linux.