匹配 ids 并打印原始文件

匹配 ids 并打印原始文件

我有两个文件

原文:(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

相关内容