Ainda não está claro. Você deseja listar todas as linhas para as quais o gene_name
é encontrado no segundo arquivo de texto? Para isso, tente
awk 'NR == FNR {T[" gene_name \"" $0 "\""]; next} {for (t in T) if ($0 ~ t) print}' file2 file1
Eu tenho um arquivo GTF (delimitado por tabulação) e uma lista de nomes genéticos em outro arquivo de texto. Eu queria saber como posso obter as informações da lista de genes de um arquivo GTF com grep, awk
? Eu tentei alguns comandos, mas nenhum deles foi bem sucedido.
Aqui está um exemplo de arquivo gtf:
#!genome-build GRCh37.p13
#!genome-version GRCh37
#!genome-date 2009-02
#!genome-build-accession NCBI:GCA_000001405.14
#!genebuild-last-updated 2013-09
1 pseudogene gene 11869 14412 . + . gene_id "ENSG00000223972"; gene_name "DDX11L1"; gene_source "ensembl_havana"; gene_biotype "pseudogene";
1 processed_transcript transcript 11869 14409 . + . gene_id "ENSG00000223972"; transcript_id "ENST00000456328"; gene_name "DDX11L1"; gene_source "ensembl_havana"; gene_biotype "pseudogene"; transcript_name "DDX11L1-002"; transcript_source "havana";
1 processed_transcript exon 11869 12227 . + . gene_id "ENSG00000223972"; transcript_id "ENST00000456328"; exon_number "1"; gene_name "DDX11L1"; gene_source "ensembl_havana"; gene_biotype "pseudogene"; transcript_name "DDX11L1-002"; transcript_source "havana"; exon_id "ENSE00002234944";
1 processed_transcript exon 12613 12721 . + . gene_id "ENSG00000223972"; transcript_id "ENST00000456328"; exon_number "2"; gene_name "DDX11L1"; gene_source "ensembl_havana"; gene_biotype "pseudogene"; transcript_name "DDX11L1-002"; transcript_source "havana"; exon_id "ENSE00003582793";
1 processed_transcript exon 13221 14409 . + . gene_id "ENSG00000223972"; transcript_id "ENST00000456328"; exon_number "3"; gene_name "DDX11L1"; gene_source "ensembl_havana"; gene_biotype "pseudogene"; transcript_name "DDX11L1-002"; transcript_source "havana"; exon_id "ENSE00002312635";
10 protein_coding exon 114710009 114710704 . + . gene_id "ENSG00000148737"; transcript_id "ENST00000355995"; exon_number "1"; gene_name "TCF7L2"; gene_source "ensembl_havana"; gene_biotype "protein_coding"; transcript_name "TCF7L2-203"; transcript_source "ensembl"; exon_id "ENSE00002258101";
10 protein_coding CDS 114710516 114710704 . + 0 gene_id "ENSG00000148737"; transcript_id "ENST00000355995"; exon_number "1"; gene_name "TCF7L2"; gene_source "ensembl_havana"; gene_biotype "protein_coding"; transcript_name "TCF7L2-203"; transcript_source "ensembl"; protein_id "ENSP00000348274";
e aqui está um exemplo de uma lista do nome do gene no arquivo de texto (que eu quero extrair todas as informações relacionadas do arquivo gtf).
DDX11L1
TCF7L2
Obrigado
Ainda não está claro. Você deseja listar todas as linhas para as quais o gene_name
é encontrado no segundo arquivo de texto? Para isso, tente
awk 'NR == FNR {T[" gene_name \"" $0 "\""]; next} {for (t in T) if ($0 ~ t) print}' file2 file1
Se você tiver um arquivo com a pequena lista de dados para os quais deseja obter os detalhes, você pode fazer um simples grep
. Digamos, por exemplo, que sua lista de cada datum esteja em um arquivo chamado needles.list
e sua coleção de dados esteja em um arquivo chamado haystack.gtf
. Você pode então:
$ grep -f needles.list haystack.gtf