0

長さの異なる 2 つのファイルがあり、file2 は大きな参照ファイルで、そこからファイル 1 のデータを抽出します。

ファイル内で検索と置換を行うために通常微調整する awk の行がありますが、常に同じ列で検索と置換が行われます。

たとえば、file1 の $1 = file2 の $7 の場合、file1 の $1 を file2 の $2 に置き換えると、通常は次のようになります。

awk 'FNR==NR{a[$7]=$2;next}a[$1]{$1=a[$1]}1' file2 file1 > newfile

ただし、コーディングする方法を考えようとしています:

$2 of file1 = $2 of file2 の場合、$1 file1 を file2 の $1 に置き換えます。

しかし、上記のコードでは、どの $1 が「検索」を指し、どの $1 が「置換」を指しているのかわかりません。

file1 は次のようになります

0   rs58108140  0   0   G   A   
0   rs189107123 0   0   C   G
0   rs180734498 0   0   C   T

file2 は次のようになります

1   rs58108140  0   10583   G   A   1:10583
1   rs189107123     0   10611   C   G   1:10611
1   rs180734498     0   13302   C   T   1:13302

望ましい出力は次のようになります。

1   rs58108140  0   10583   G   A
1   rs189107123     0   10611   C   G
1   rs180734498     0   13302   C   T 

助けてくれてありがとう。

4

1 に答える 1