【发布时间】:2015-10-24 18:55:40
【问题描述】:
我有两个文件,一个看起来像这样,
chrom start end ref alt alt_freq_CR alt_freq_ID gene gene_type
chr10 28814618 28814618 T C 0 0.4167 AAA sense
chr10 32557818 32557818 C T 0 0.1579 BBB PC
chr10 119245101 119245101 T C 0 0.1667 ZZZ rega
chr10 119245101 119245101 T C 0 0.1667 CCC sense
文件 2
chrom start end ref alt alt_freq_CR alt_freq_ID gene gene_type
chr10 28814618 28814618 T C 0 0.4167 AAA sense
chr10 32557 32557 C T 0 0.1579 BBB PC
chr10 119245101 119245101 T C 0 0.1667 DDD rega
chr10 119245101 119245101 T C 0 0.1667 EEE sense
我需要一个输出文件,如果它满足以下条件, 如果来自 file_1 的第 8 列基因和来自 file_2 的基因(第 8 列)匹配,那么它应该打印如下,
chrom start end ref alt alt_freq_CR alt_freq_ID gene gene_type chrom start end ref alt alt_freq_CR alt_freq_ID
chr10 28814618 28814618 T C 0 0.4167 AAA sense chr10 28814618 28814618 T C 0 0.4167
chr10 32557818 32557818 C T 0 0.1579 BBB PC chr10 32557 32557 C T 0 0.1579
我尝试如下使用 awk,但它没有在输出中打印所有匹配的行..
awk 'FNR==NR{a[$16]=$0;next}{if(b=a[$16]){print b}}' file_1 file_2
如果有python脚本中的解决方案,那就太好了,而且两个文件大小不同,行数不同。
【问题讨论】:
-
您可能想阅读 pandas 文档中关于
merge和join的章节。