Manter apenas linhas que seguem um determinado padrão

Manter apenas linhas que seguem um determinado padrão

Eu tenho um arquivo com 5,5 milhões de linhas.

Exemplo:

chr1    10000   10468   +   (TAACCC)n   Simple_repeat   Simple_repeat
chr1    10468   11447   -   TAR1    Satellite   telo
chr1    11504   11675   -   L1MC5a  LINE    L1
chr1    11677   11780   -   MER5B   DNA hAT-Charlie
chr10_GL383545v1_alt    11877   11980   -   Alu ERV1
chr11_BL383595v1_alt    12077   12980   -   Alu ERV1
chr3    11504   11675   -   L1MC5a  LINE    L1

Estou interessado em manter apenas as linhas que não possuem _na primeira coluna

A saída seria algo como:

chr1    10000   10468   +   (TAACCC)n   Simple_repeat   Simple_repeat
chr1    10468   11447   -   TAR1    Satellite   telo
chr1    11504   11675   -   L1MC5a  LINE    L1
chr1    11677   11780   -   MER5B   DNA hAT-Charlie
chr3    11504   11675   -   L1MC5a  LINE    L1

Não sei quantas das minhas linhas indesejadas existem. Eu preferiria usar, awkmas comandos bash normais também funcionam.

Responder1

awké mais adequado para lidar com colunas

awk '$1 !~ /_/' file

!~permite verificar se algo não corresponde ao padrão


Comgrep

grep -v '^\S*_' file

ou, se \Snão for reconhecido,

grep -v '^[^[:space:]]*_' file

informação relacionada