Atualiza os valores de um arquivo usando informações de outro arquivo

3

Arquivo 1:

P       SNP:
0.266234        1:11008
0.266234        1:11012
0.340042        1:13110
0.86724 rs201725126
0.86724 rs200579949
0.127269        1:1327

Arquivo 2:

snp     chr:pos
rs201725126     1:10020
rs200579949     1:10055
rs62651026      1:10108
rs376007522     1:10109
rs796688738     1:10128
rs368469931     1:10139

Saída desejada:

P       SNP:
0.266234        1:11008
0.266234        1:11012
0.340042        1:13110
0.86724 1:10020
0.86724 1:10055
0.127269        1:13273

Então, eu gostaria de substituir todos os rsIDs no arquivo um com chr: pos do arquivo 2, mantendo todas as outras linhas que já tenham o formato chr: pos inativo.

Eu tentei este comando:

awk 'NR==FNR{a[$1]=$2} NR>FNR{$2=a[$2];print}'  file2.txt file1.txt > merged.txt

Embora mescle bem os rsIDs, perco o formato chr: pos existente, como mostrado abaixo.

P       SNP:
0.266234        
0.266234        
0.340042        
0.86724 1:10020
0.86724 1:10055
0.127269        
    
por VasoGene 10.06.2017 / 01:52

1 resposta

4
awk 'NR==FNR{a[$1]=$2; next} $2 in a {$2=a[$2]} {print}'  file2.txt file1.txt
P       SNP:
0.266234        1:11008
0.266234        1:11012
0.340042        1:13110
0.86724 1:10020
0.86724 1:10055
0.127269        1:1327
    
por 10.06.2017 / 01:59