使用另一个文件中的信息更新文件的值

使用另一个文件中的信息更新文件的值

文件一:

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

文件2:

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

期望的输出:

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

因此,我想将文件 1 中的所有 rsID 替换为文件 2 中的 chr:pos,使所有其他已具有 chr:pos 格式的行保持不变。

我尝试过这个命令:

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

虽然它很好地合并了 rsID,但我丢失了现有的 chr:pos 格式,如下所示。

P       SNP:
0.266234        
0.266234        
0.340042        
0.86724 1:10020
0.86724 1:10055
0.127269        

答案1

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

相关内容