Ok, na verdade esqueci que fiz essa pergunta, mas alguém acabou de votar nesse post e, desde então, descobri que vou postar a resposta.
Para o primeiro snippet de saída listado acima,
10 10011300 10011301 T C
10 10012494 10012495 G A
10 10028691 10028692 A T
10 10093496 10093497 G A
10 10102457 10102458 C T
10 10103252 10103253 G C
10 10122271 10122272 T C
10 10128778 10128779 T C
10 10130299 10130300 C A
10 10148307 10148308 G A
tudo que eu precisava fazer era usar o seguinte comando awk,
cat [inputfile.txt] | awk '{print $1"_"$3"\t"$4"\t"$5}' | sort -k1,1 > outputfileA.txt
A saída ficaria assim e todas as linhas seriam classificadas pela primeira coluna:
10_10011301 T C
10_10012495 G A
10_10028692 A T
10_10093497 G A
Eu também faria o mesmo para o segundo trecho de código,
1 10177 rs367896724
1 10235 rs540431307
1 10352 rs555500075
1 10505 rs548419688
1 10506 rs568405545
e use um comando awk similar para gerar outro arquivo:
cat [inputfile.txt] | awk '{print $1"_"$2"\t"$3}' | sort -k1,1 > outputfileB.txt
Como resultado:
1_10177 rs367896724
1_10235 rs540431307
1_10352 rs555500075
1_10505 rs548419688
1_10506 rs568405545
Como esses dois arquivos de saída têm uma coluna em comum e essas colunas são classificadas de forma idêntica, podemos invocar o comando de união:
join -1 1 -2 2 outputfileA.txt outputfileB.txt | tr ' ' '\t' > outputfileC.txt
tr ' ' '\t'
traduz todos os espaços em branco nas guias na saída. Todas as linhas com correspondências idênticas entre a primeira coluna do primeiro arquivo e a primeira coluna do segundo arquivo são gravadas no arquivo de saída, que pode ter a seguinte aparência:
1_101850899 A C rs138958619
1_101856556 T C rs191666242
1_101867058 C T rs188447998
1_101874381 A C rs143747209
1_101877269 G A rs186149522
1_101878704 C A rs192815769
1_101885657 G T rs150829467
1_101891797 T G rs141886478
1_101893793 T A rs182950692
1_101897192 T C rs189527356
Espero ter explicado isso bem. Deixe-me saber se preciso esclarecer alguma coisa.