Como deletar linhas contendo alguns nomes em uma coluna em arquivos txt

0

Tenho alguns arquivos de texto grandes delimitados por tabulações:

#CHR  POS  REF  ALT    EFC                         GOM
1    100   A    G     u_v(XXXXXX);i_v(XXXXXXX)     0
2    465   T    C     d_r(XXXXXX);i_r(XXXXXXXX)    1
9    600   T    G     d_i(XXXXXX);f_v(XXXXXXXX)    -

Eu quero excluir as linhas que

(1) o conteúdo da coluna "EFC" contém "i_r" ou "u_v" (até há também "(XXXXXX)" e outras coisas lá)

ou

(2) os valores na coluna "GOM" igual a 1.

Então, como obter os arquivos esperados usando o awk ou sed?

    
por MagicPants 26.07.2017 / 15:15

1 resposta

2

Diretamente traduzido para o awk:

awk -F'\t' '!($5 ~ /i_r/ || $5 ~ /u_v/ || $6 == 1) { print; }' input
  1. Defina o separador de campos para a guia \t
  2. Se as seguintes condições não forem true !( ... )
  3. Condição 1: o campo 5 contém i_r ou
  4. Condição dois: o campo 5 contém u_v ou
  5. Condição três: o campo 6 é 1 e, em seguida,
  6. print da linha

As linhas que correspondem a qualquer uma das condições não serão impressas ("excluídas").

Exemplo de saída:

#CHR    POS     REF     ALT     EFC     GOM
9       600     T       G       d_i(XXXXXX);f_v(XXXXXXXX)       -
    
por 26.07.2017 / 15:55