Оба моих файла выглядят так
file1
NC_000001.11:g.100007038C>T
NC_000001.11:g.100007039C>A
file2
NC_000001.11:g.100007038C>T NM_001271684.2:c.347C>T NP_001258613.1:p.Thr116Met
NC_000001.11:g.100007038C>T NM_001271685.2:c.473C>T NP_001258614.1:p.Thr158Met
NC_000001.11:g.100007038C>T NM_012243.3:c.347C>T NP_036375.1:p.Thr116Met
NC_000001.11:g.100007039G>A NM_001271684.2:c.348G>A NP_001258613.1:p.Thr116%3D
NC_000001.11:g.100007039G>A NM_001271685.2:c.474G>A NP_001258614.1:p.Thr158%3D
Мой желаемый результат:
Я хочу сопоставить первый столбец от file2
до первого столбца моего file1
. Если совпадение верно, то я хочу добавить третий столбец file2
к новому столбцу в file1
, например, чтобы получить:
file1
NC_000001.11:g.100007038C>T NP_001258613.1:p.Thr116Met, NP_001258614.1:p.Thr158Met, NP_036375.1:p.Thr116Met
Вот моя попытка:
awk 'BEGIN{ FS=OFS="\t" }
NR==FNR {a[$0]; next;}
{
for (k in a) {
if ($1 == k) {
print $0 "\t" a[$3]
}
}
}' file1.txt file2.txt
Но не даст желаемого результата:
NC_000001.11:g.100007038C>T NM_001271684.2:c.347C>T NP_001258613.1:p.Thr116Met
NC_000001.11:g.100007038C>T NM_001271685.2:c.473C>T NP_001258614.1:p.Thr158Met
NC_000001.11:g.100007038C>T NM_012243.3:c.347C>T NP_036375.1:p.Thr116Met
NC_000001.11:g.100007039G>A NM_001271684.2:c.348G>A NP_001258613.1:p.Thr116%3D
NC_000001.11:g.100007039G>A NM_001271685.2:c.474G>A NP_001258614.1:p.Thr158%3D
Заранее спасибо.
PS : file1
содержит уникальные записи. file2
отсортировано, разделено табуляцией и содержит более 3 миллионов записей.
Edit:
Под разделением табуляции я имел в виду то, что новый столбец добавляется как разделенный табуляцией, но значения внутри этого столбца разделены запятыми.