excluir líneas de un archivo según valores específicos en ciertas columnas

excluir líneas de un archivo según valores específicos en ciertas columnas

Tengo un archivo de texto en el servidor Linux CentOS 7 que incluye muchas entradas en el siguiente 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

¿Qué comando debo usar para eliminar?

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

entonces el resultado debería ser

1234567890123456, 5, 17, cde, Test Test
1234567890123456, 1, 18, cde, Test Test

Respuesta1

awkacercarse:

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

La salida:

1234567890123456, 5, 17, cde, Test Test
1234567890123456, 1, 18, cde, Test Test

  • -F,- separador de campo

  • $2, $3- representan el segundo y tercer campo respectivamente

Respuesta2

Para excluir esos valores exactos, aprovechando el punto en común de que la exclusión del campo 3 es siempre '17':

awk -F, '!($3 == 17 && ($2 == 1 || $2 == 2 || $2 == 3 || $2 == 4))' < input > output

información relacionada