バリアント識別子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