我有两个文件
原文:(5000条)
Chr Position
chr1 879108
chr1 881918
chr1 896874
…
和一个包含等位基因频率的文件(2000 个条目)
Chr Position MAF
chr1 881918 0.007
chr1 979748 0.007
chr1 1120377 0.007
chr1 1178925 0.036
我希望原始文件与等位基因频率相匹配,并打印出包含 5000 个条目的输出文件。这可以用 awk 或 sed 完成吗?
Chr Position MAF
chr1 879108
chr1 881918 0.007
chr1 896874
…
答案1
我可以使用join
和获得你需要的东西awk
$ cat original
chr1 879108
chr1 881918
chr1 896874
$ cat freq
chr1 881918 0.007
chr1 979748 0.007
chr1 1120377 0.007
chr1 1178925 0.036
$ join -a1 -j 2 --nocheck-order original freq | awk '{print $2, $1, $4}'
chr1 879108
chr1 881918 0.007
chr1 896874
where-a1
表示打印第一个文件的所有行,-j 2
匹配第二个字段,并且--nocheck-order
不检查排序的输入。管道awk
只是将列处理为您需要的形状。
答案2
您还可以尝试:
awk 'NR==FNR{A[$1,$2]=$3; next} {$3=A[$1,$2]}1' file2 file