Você quer join (1)
, eu acho:
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.
[0 1075 12:50:10] ~/temp/sx % join A B
1 kfjk 3243424
3 iefjk 21493402
8 kfkdlkf 309834
join: file 1 is not in sorted order
OK, então aparentemente você precisa combinar isso com sort (1)
para classificar por valor alfa (não valor numérico, então 20 < 3)
join <(sort A) <(sort B)
funciona para mim, mas isso parece estranho e pode ser uma extensão zsh. Não há mal em fazer
sort A > A.tmp; sort B > B.tmp; join A.tmp B.tmp
(Como sempre, verifique as páginas de manual quanto a armadilhas.)