生物を表すコード(ctc、nmg、nmlなど)を含むタブ区切りのファイルがあります(File_1)。
522 ctc:CTC00972 - 506 3.20E-138
522 nmg:Nmag_3027 - 561 4.70E-73
522 nml:Namu_3564 - 566 1.80E-146
コードを生物名(File_2)に関連付けるタブ区切りファイルもあります。
ctc Clostridium_tetani_E88
nla Neisseria_lactamica
nmg Natrialba_magadii
File_1のコードをFile_2の生物名にどのように変更しますか?
希望の出力:
522 Clostridium_tetani_E88:CTC00972 - 506 3.20E-138
522 Natrialba_magadii:Nmag_3027 - 561 4.70E-73
522 Neisseria_lactamica:Namu_3564 - 566 1.80E-146
データセット全体には数千のコードがあり、File_1とFile_2の生物の順序が異なることに注意してください。
ベストアンサー1
これは実際には、「あるファイルからルックアップテーブルを作成して別のファイルを処理するために使用する」のバリエーションにすぎず、ルックアップキーを2番目のフィールドから切り離す必要があるという欠点があります。awk
たとえば、次のようにできます。
awk '
BEGIN{OFS=FS="\t"}
NR==FNR {
a[$1]=$2; next
}
{
split($2,b,":");
if (b[1] in a) $2 = a[b[1]]":"b[2]
} 1' File_2 File_1