У меня есть текстовый файл на сервере 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