Extraia linhas que tenham um final específico e use-as para extrair de outro arquivo

1

Eu tenho dois arquivos, dos quais eu preciso extrair as coisas. O primeiro arquivo contém uma linha de código de barras e termina com um número de OTU. Eu preciso extrair linhas que tenham números específicos de OTU.

Quando tiver o arquivo de linhas extraídas, preciso extrair linhas do meu próximo arquivo que correspondam aos códigos de barras do primeiro arquivo.

Por exemplo, digamos que eu queira extrair todas as linhas que contêm OTU_1 desse arquivo

ExistemcódigosdebarrasexclusivosassociadosacadalinhaquecontémOTU1,nesteexemplo,sãomostrados5:

907.2::M02542:207:000000000-AWDAH:1:1115:18838:201661:N:0:GTGAAA905.2::M02542:207:000000000-AWDAH:1:1101:24324:103291:N:0:GTGAAA1205.2::M02542:207:000000000-AWDAH:1:2115:22195:238121:N:0:GTGAAA906.2::M02542:207:000000000-AWDAH:1:1115:24086:126561:N:0:GTGAAA910.2::M02542:207:000000000-AWDAH:1:1112:26236:215801:N:0:GTGAAA

Vouprecisarusaressescódigosdebarrasparaextrairsequênciasdomeupróximoarquivo:

Como você pode ver, os códigos de barras começam depois de > e vou precisar de todas as informações entre o > (ou seja, minhas seqüências).

Eu tentei a coisa óbvia, que seria usar um tipo de software de planilha e classificar por OTU #, mas meus arquivos são muito grandes (~ vários bilhões de linhas de comprimento).

    
por Mara Cloutier 01.08.2017 / 15:42

1 resposta

1

Com o GNU grep , algo assim deve funcionar:

grep -o '\S\+\s\+OTU_1$' Fasta.readmap.uc | \
grep -o '^\S\+' | \
grep -f - -A 1 092016MABits-pr.fasta | \
grep -v '^>'

O -o torna grep output apenas o texto correspondente. O -f - informa grep para procurar os padrões enviados de STDIN . O -A 1 informa grep para mostrar a linha após a partida. O% final grep corresponde apenas às linhas que não estão com " > ".

    
por 01.08.2017 / 16:15

Tags