文件一:
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