Если ваш первый файл достаточно мал, чтобы поместиться в памяти, вы можете сделать это в Perl:
perl -e 'open($f1,"file1"); while(<$f1>){chomp; $k{$_}++}
while(<>){ /(.+?\s+.+?)\s/; print if defined($k{$1})' file2
Это должно быть достаточно быстро, но ему все равно нужно прочитать весь файл2
.