변형 식별자 chr:pos가 있는 .bim 파일과 chr:pos 및 rs ID와 일치하는 SNP list.file이 있습니다.
파일1(.bim 파일):
1 1:10583 0 10583 G A
1 1:10611 0 10611 G C
...
22 22:51242613 0 51242613 C A
22 22:51243297 0 51243297 T A
파일 2(SNP 목록):
rs99999 4:163870478
rs99998 4:117161848
...
file1의 컬럼2가 file2의 컬럼2(모두 chr:pos)와 일치할 때 file1의 컬럼2를 file2의 컬럼1로 바꾸고, 그렇지 않으면 file1의 컬럼2를 유지하려고 합니다.
성공하지 못하고 다음 스크립트를 시도했지만 교체가 발생하지 않습니다. 누구든지 도와줄 수 있나요?
awk -F"\t" -v OFS="\t" '{
if (FNR==NR) {
a[FNR]=$2;b[FNR]=$1}
else {
if (a[FNR] == $2) {
$2=b[FNR]} else {$2=$2};
print $0
}
}' file2 file1 > file1_update
답변1
BIM 파일과 일치하는 rsID 목록에 항목을 추가했습니다.
$ cat file2.list
rs99999 4:163870478
rs99998 4:117161848
rs123456 22:51242613
그 다음에:
$ awk -F"\t" -v OFS="\t" '{
if(NR==FNR){
a[$2]=$1; next
}
if($2 in a){
$2=a[$2]
}
}1;' file2.list file1.bim
1 1:10583 0 10583 G A
1 1:10611 0 10611 G C
...
22 rs123456 0 51242613 C A
22 22:51243297 0 51243297 T A