다른 파일의 정보를 사용하여 파일 값 업데이트

다른 파일의 정보를 사용하여 파일 값 업데이트

파일 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

관련 정보