【发布时间】:2020-05-05 16:59:10
【问题描述】:
我的两个文件都是这样的
文件1
NC_000001.11:g.100007038C>T
NC_000001.11:g.100007039C>A
文件2
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 的新列中,例如获得:
文件1
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 已排序、制表符分隔,包含超过 300 万个条目。
编辑:
我所说的制表符分隔是指新列以制表符分隔的形式附加,但该列中的值以逗号分隔。
【问题讨论】:
标签: awk