Не уверен насчет вашей логики с join
или почему она жалуется, но ...
awk 'NR==FNR{a[$1]=$0};NR!=FNR{if($1 in a){print a[$1],$2}}' file1 file2
rs1248851 C 655 0.7666 -0.8358 0.4033 G
rs1248857 G 654 1.069 0.4283 0.6684 A
rs1248860 G 656 1.052 0.3234 0.7464 A
rs12488651 G 652 1.246 1.343 0.1792 T
rs1248865 C 649 0.7419 -0.9125 0.3615 G
rs1248866 C 649 0.7696 -0.8053 0.4207 G
rs1248868 C 649 0.7717 -0.8317 0.4056 T
rs1248869 T 647 0.7878 -0.766 0.4437 C
Давайте сломаем awk вниз; в то время как NR
(номер записи во всех входных данных) соответствует FNR
(номер записи в файле), мы сохраняем каждую строку в массив, используя записи первого столбца в качестве индекса.
Когда мы достигаем второго файла и его первый столбец можно найти в нашем ранее созданном массиве, мы печатаем строку из первого файла, за которой следует второй столбец из второго файла.