como imprimir se uma linha contiver um padrão específico e não imprimir se não contiver o padrão

2
">16RI1_0 M01230:42:000000000-AWMRD:1:1101:15012:1778 1:N:0:0 
TATCCGGATTTACTGGGTGTAAAGGGAGCGTAGGCGGCCATGCAAGTCAGAAGTGAAAAC
">16RA2_1 M01230:42:000000000-AWMRD:1:1101:15923:1780 1:N:0:0 
TTGTCCGGATTTATTGGGCGTAAAGCGAGCGCAGGCGGTTTCTTAAGTCTGATGTGAAAGC
">0VC3_7 M01230:42:000000000-AWMRD:1:1101:15805:1805 1:N:0:0 TCATGAAGAACTCCGATCGCGAAGGCAAGTGTCCGGGGTGCAACTGACGCTGAGGCTCGAA
">11VI2_15 M01230:42:000000000-AWMRD:1:1101:17657:1817 1:N:0:0 
GCGGCTTACTGGACTGTAACTGACGTTGAGGCTCGAAAGCGTGGGGAGCAAACAGGGCTC

Olá, eu tenho um arquivo contendo informações como esta. Quero imprimir todas as linhas que começam com ">" assinar e a próxima linha, mas há uma condição na linha que começa com ">" sinal deve conter a letra V. Por favor me ajude.

    
por Masum Billah 31.01.2017 / 08:35

3 respostas

4

Com o GNU sed (padrão no sistema Linux), você pode obter a linha de cabeçalho (contendo um V em qualquer lugar) e a primeira linha da sequência de um arquivo fasta como este:

sed -n '/^>.*V/,+1p' sequence.fa

Isto está assumindo que o arquivo fasta está formatado corretamente.

O -n desativa a saída padrão e /^>.*V/,+1p imprime qualquer linha de cabeçalho com V , junto com a linha imediatamente a seguir.

    
por 31.01.2017 / 08:50
7

I want to print all the lines starting with ">" sign and the next line but there is a condition the line starting with ">" sign should contain the letter V.

Este grep parece funcionar:

grep -A 1 '^">.*V'

Exemplo:

grep -A 1 '^">.*V' file 
">0VC3_7 M01230:42:000000000-AWMRD:1:1101:15805:1805 1:N:0:0 TCATGAAGAACTCCGATCGCGAAGGCAAGTGTCCGGGGTGCAACTGACGCTGAGGCTCGAA
">11VI2_15 M01230:42:000000000-AWMRD:1:1101:17657:1817 1:N:0:0 
GCGGCTTACTGGACTGTAACTGACGTTGAGGCTCGAAAGCGTGGGGAGCAAACAGGGCTC
    
por 31.01.2017 / 08:42
1

Você disse:

I want to print all the lines starting with ">" sign and the next line but there is a condition the line starting with ">" sign should contain the letter V

Isso é um bom trabalho para o awk:

$ awk '/^">.*V/{print $0;getline line; print line}' input.txt                                                            
">0VC3_7 M01230:42:000000000-AWMRD:1:1101:15805:1805 1:N:0:0 
TCATGAAGAACTCCGATCGCGAAGGCAAGTGTCCGGGGTGCAACTGACGCTGAGGCTCGAA
">11VI2_15 M01230:42:000000000-AWMRD:1:1101:17657:1817 1:N:0:0 
GCGGCTTACTGGACTGTAACTGACGTTGAGGCTCGAAAGCGTGGGGAGCAAACAGGGCTC
    
por 31.01.2017 / 11:30