исключить строки из файла на основе определенных значений в определенных столбцах

исключить строки из файла на основе определенных значений в определенных столбцах

У меня есть текстовый файл на сервере Linux CentOS 7, который содержит множество записей в следующем формате:

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

Какую команду мне использовать для удаления?

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

поэтому результат должен быть

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

решение1

awkподход:

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

Выход:

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

  • -F,- разделитель полей

  • $2, $3- представляют 2-е и 3-е поле соответственно

решение2

Чтобы исключить эти точные значения, воспользуемся тем общим свойством, что исключение поля 3 всегда равно «17»:

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

Связанный контент