比较两个文件后,提取特定列的所有行

时间:2014-01-14 18:25:24

标签: shell unix bioinformatics

我有两个包含数千行的文本文件。文件A只有一列(ID)

#ID
rs111
rs222
rs333
rs444

文件B如下所示:

#CHROM POS ID REF ALT QUAL ......

22 111 rs111 T C . ....

22 222 rs222 A G ....

22 333 rs666 G T ...

22 444 rs777 A A ..

这是我想要的输出:

#CHROM POS ID REF ALT QUAL ......

22 111 rs111 T C . ....

22 222 rs222 A G ....

即。我想只从文件B中提取那些ID与文件A中给出的ID相匹配的行。我怎样才能实现这一点?感谢

3 个答案:

答案 0 :(得分:2)

你可以使用这个awk:

awk 'FNR==NR{a[$1];next} ($3 in a)' fileA fileB
22 111 rs111 T C . ....
22 222 rs222 A G ....

答案 1 :(得分:0)

虽然anubhava发布的awk解决方案更优雅,但您可能会放弃:

$ grep -f filea fileb 
22 111 rs111 T C . ....
22 222 rs222 A G ....

答案 2 :(得分:0)

请参阅生物标记中的“查询dbSNP VCF文件”:http://www.biostars.org/p/88799/http://www.biostars.org/p/12707/