ファイル1の列1がファイル2の列2と一致する場合は、ファイル2の列13をファイル1の列2に置き換える必要があります。
ファイル1
AAAA00000687697 HPNMS
AAAA00000693037 GER112
AAAA00000349750 FRA0158
ファイル2
585 AAAA00000687697 1 + 11868 14409 14409 14409 3 11868,12612,13220, 12227,12721,14409, 0 BBBB00000223972 none none -1,-1,-1,
585 AAAA00000693037 1 + 11871 14412 14412 14412 3 11871,12612,13224, 12227,12721,14412, 0 BBBB00000223972 none none -1,-1,-1,
585 AAAA00000349750 1 + 11873 14409 14409 14409 4 11873,12594,13402,13660, 12227,12721,13655,14409, 0 BBBB00000223972 none none -1,-1,-1,-1,
出力は次のようにする必要があります
585 AAAA00000687697 1 + 11868 14409 14409 14409 3 11868,12612,13220, 12227,12721,14409, 0 HPNMS none none -1,-1,-1,
585 AAAA00000693037 1 + 11871 14412 14412 14412 3 11871,12612,13224, 12227,12721,14412, 0 GER112 none none -1,-1,-1,
585 AAAA00000349750 1 + 11873 14409 14409 14409 4 11873,12594,13402,13660, 12227,12721,13655,14409, 0 FRA0158 none none -1,-1,-1,-1,
私は次のコードを試しました
awk 'NR==FNR{a[$1]=$2;next} $2 in a {$13=a[$1];print}' FS='\t' OFS='\t' file1.txt file2.txt > output.txt
列 13 が空のファイル 2 を印刷します。
a[$1]だけを印刷しようとすると、空のファイルが印刷されます。最初の中かっこから次の部分を削除すると、a[$1] のみが印刷されます。なぜ配列を保存するのに問題があるのかわかりません。
ベストアンサー1
可能であれば、$13
配列文字列に置き換えてください。a[$2]
awk 'NR==FNR{a[$1]=$2;next}($2 in a){$13=a[$2]}1' file1 file2