他のファイルの情報を使用してファイル値を更新する

他のファイルの情報を使用してファイル値を更新する

ファイル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

ファイル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

関連情報