GNU coreutils inclui o comando join
que faz exatamente o que você quer se a classificação de linha no resultado for irrelevante:
join <(sort file1) <(sort file2)
A 1 9
B 3 3
C 1 2
Se você quiser as guias de volta, faça:
join <(sort file1) <(sort file2) | tr ' ' '\t'
A 1 9
B 3 3
C 1 2
Ou use a opção t
para join
.
( <()
aka substituição de processo, requer ksh93 (onde o recurso foi originado em), bash ou zsh)