grep para buscar linha inteira

0

Eu tenho um arquivo como:

  Chr1    Cufflinks       exon    7136    7944    .       +       .       gene_id "XLOC_000001"; transcript_id "TCONS_00000003"; exon_number "5"; gene_name "LOC_Os01g01010"; oId "TCONS_00000003"; nearest_ref "LOC_Os01g01010.2"; class_code "="; tss_id "TSS1"; p_id "P2";
  Chr1    Cufflinks       exon    8028    8150    .       +       .       gene_id "XLOC_000001"; transcript_id "TCONS_00000003"; exon_number "6"; gene_name "LOC_Os01g01010"; oId "TCONS_00000003"; nearest_ref "LOC_Os01g01010.2"; class_code "u"; tss_id "TSS1"; p_id "P2";

Eu quero buscar toda a linha, onde quer que haja um "u" em uma linha

A saída deve ser como:

  Chr1    Cufflinks       exon    8028    8150    .       +       .       gene_id "XLOC_000001"; transcript_id "TCONS_00000003"; exon_number "6"; gene_name "LOC_Os01g01010"; oId "TCONS_00000003"; nearest_ref "LOC_Os01g01010.2"; class_code "u"; tss_id "TSS1"; p_id "P2";

Eu tentei grep -o "u" a >b

    
por user106326 09.04.2015 / 08:08

5 respostas

2

Usando awk , você pode corresponder à coluna 22 usando

awk '$22=="\"u\";"' a
    
por 09.04.2015 / 08:15
2
grep "\"u\";" a >b

também fará o trabalho.

    
por 09.04.2015 / 10:35
2

No caso mais simples, onde você quer apenas qualquer linha que contenha "u" , você pode fazer

grep '"u"' a > b

Se você quer ter certeza de que ele só corresponde no campo de descrição do seu arquivo gff (assumindo que este é um arquivo gff corretamente formatado com campos separados por tabulação), você pode fazer:

awk -F"\t" '$NF~/"u"/' a > b

Por fim, se você estiver interessado apenas em casos em que "u" esteja no campo do subdomínio do campo do atributo, você poderá usar:

awk -F";" '$7~/"u"/' a > b
    
por 09.04.2015 / 12:10
2

Você pode usar isto:

awk '$22 ~ /\"u\";/' file

Se houver um número variável de campos, conforme mencionado nos comentários, e class_code preceder o campo obrigatório, isso poderá ser útil:

awk '{ for (i = 1; i <= NF; i++) { if ($i ~ /class_code/) { if ($(i+1) ~ /\"u\";/) { print $0; break; } } } }' file
    
por 09.04.2015 / 08:11
1

Ou grep para class_code "u" :

grep 'class_code "u"' input
    
por 09.04.2015 / 08:15