基于另一个fi筛选txt(GTF)文件

2024-06-10 03:53:04 发布

您现在位置:Python中文网/ 问答频道 /正文

有人能帮我解决一个AWK问题吗? 我有一个大的GTF文件如下。第9个字段包含我要使用的gene iu id。在

文件1.gtf

chr1  hg38_refGene  exon         67127166   67127257   0.000000  -  .  gene_id  "NR_075077";  transcript_id  "NR_075077";
chr1  hg38_refGene  exon         67131142   67131227   0.000000  -  .  gene_id  "NR_075077";  transcript_id  "NR_075077";
chr1  hg38_refGene  exon         67134930   67134971   0.000000  -  .  gene_id  "NR_075077";  transcript_id  "NR_075077";
chr1  hg38_refGene  start_codon  201283703  201283705  0.000000  +  .  gene_id  "NM_000299";  transcript_id  "NM_000299";
chr1  hg38_refGene  CDS          201283703  201283904  0.000000  +  0  gene_id  "NM_000299";  transcript_id  "NM_000299";
chr1  hg38_refGene  exon         201283452  201283904  0.000000  +  .  gene_id  "NM_000299";  transcript_id  "NM_000299";

然后我有另一个文件,里面有我想从其他文件中筛选出来的所有基因。在

file2.txt

^{pr2}$

我希望输出是一个经过过滤的文件1,其中有我想保留的gene_id行。python中的其他解决方案也会很受欢迎。 提前谢谢你!在


Tags: 文件idstartnrgtftranscriptchr1gene
2条回答

试试下面的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]=1;next } ids[$2]' file2.txt file1.gtf

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

相关问题 更多 >