Python 根据另一个文件筛选txt(GTF)文件

Python 根据另一个文件筛选txt(GTF)文件,python,awk,Python,Awk,有人能帮我解决一个AWK问题吗? 我有一个大的GTF文件,如下所示。第9个字段包含我要使用的gene_id file1.gtf 然后,我有另一个文件,其中包含我想从其余文件中过滤掉的所有基因id file2.txt 我希望输出是一个经过筛选的文件1,其中包含我希望保留的gene_id行。其他python解决方案也将不胜感激。 提前谢谢你 请尝试以下操作: awk -F'"' 'NR==FNR { ids[$1]=1;next } ids[$2]' file2.txt file1.gtf 首先使

有人能帮我解决一个AWK问题吗? 我有一个大的GTF文件,如下所示。第9个字段包含我要使用的gene_id

file1.gtf

然后,我有另一个文件,其中包含我想从其余文件中过滤掉的所有基因id

file2.txt

我希望输出是一个经过筛选的文件1,其中包含我希望保留的gene_id行。其他python解决方案也将不胜感激。
提前谢谢你

请尝试以下操作:

awk -F'"' 'NR==FNR { ids[$1]=1;next } ids[$2]' file2.txt file1.gtf

首先使用要从file2.txt中筛选的ID创建一个数组,然后对于file1.gtf中的每个记录,如果字段$2 split records by是数组中的ID之一,则仅打印该行。

尝试遵循awk,并让我知道这是否有助于您,它将保存file1.gif和file2.gif中常见的ID,并将输出保存到同一个file1.gif中

awk 'FNR==NR{array[$2]=$0;next} array[$1]{print array[$1]}' FS='"' file1.gif file2.txt > temp_file  && mv temp_file file1.gif

发布最终结果和到目前为止您尝试过的内容。更常见的是编写awk-F''NR==FNR{ids[$1];在ids'file2.txt file1.gtf中下一个}$2,这样您就不会在ids[]中为file1.gtf中的每一个不需要的$2创建条目。“不过这个想法是对的。”埃德默顿感谢您的富有洞察力的反馈!
awk -F'"' 'NR==FNR { ids[$1]=1;next } ids[$2]' file2.txt file1.gtf
awk 'FNR==NR{array[$2]=$0;next} array[$1]{print array[$1]}' FS='"' file1.gif file2.txt > temp_file  && mv temp_file file1.gif