exclui linhas de um arquivo com base em valores específicos em determinadas colunas

0

Eu tenho um arquivo de texto no servidor Linux CentOS 7, que inclui várias entradas no seguinte formato:

1234567890123456, 1, 17, cde, Test Test
1234567890123456, 2, 17, cde, Test Test
1234567890123456, 3, 17, cde, Test Test
1234567890123456, 4, 17, cde, Test Test
1234567890123456, 5, 17, cde, Test Test
1234567890123456, 1, 18, cde, Test Test
1234567890123456, 1, 17, cde, Test Test

qual comando devo usar para remover

1, 17
2, 17
3, 17
4, 17

para que o resultado seja

1234567890123456, 5, 17, cde, Test Test
1234567890123456, 1, 18, cde, Test Test
    
por αԋɱҽԃ αмєяιcαη 25.05.2017 / 19:21

2 respostas

2

awk abordagem:

awk -F, '!($2<5 && $3==17)' file

A saída:

1234567890123456, 5, 17, cde, Test Test
1234567890123456, 1, 18, cde, Test Test
  • -F, - separador de campos

  • $2 , $3 - representa o segundo e o terceiro campo, respectivamente

por 25.05.2017 / 19:33
1

Para excluir esses valores exatos, aproveitando a comunalidade de que a exclusão do campo 3 é sempre '17':

awk -F, '!($3 == 17 && ($2 == 1 || $2 == 2 || $2 == 3 || $2 == 4))' < input > output
    
por 25.05.2017 / 19:40