Форум русскоязычного сообщества Ubuntu


Получить помощь и пообщаться с другими пользователями Ubuntu можно
на irc канале #ubuntu-ru в сети Freenode
и в Jabber конференции ubuntu@conference.jabber.ru

Автор Тема: Найти по совпадению в столце  (Прочитано 22281 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Ввысь

  • Автор темы
  • Активист
  • *
  • Сообщений: 473
    • Просмотр профиля
Найти по совпадению в столце
« : 23 Января 2023, 22:56:30 »
Здравствуйте.

Ищу в файле по содержимому из другого файла. Вот так
cat file | grep -v -f file2Выхлоп
1 | 88.18.204.77 | 23
1 | 88.18.234.211 | 7547
Если в file2 добавить значение 23, то пропадают обе строки, т.к. в обеих строках есть 23
1 | 88.18.204.77 | 23
1 | 88.18.234.211 | 7547

Мне нужно убирать строку только если есть совпадение в третьем столбце.
Я хочу получить вот это
1 | 88.18.234.211 | 7547Как искать совпадение только в определенном столбце?
Спасибо.

Оффлайн ALiEN

  • Администратор
  • Старожил
  • *
  • Сообщений: 6690
  • 20% Cooler
    • Просмотр профиля
Re: Найти по совпадению в столце
« Ответ #1 : 23 Января 2023, 23:44:45 »
Если столбец последний, то самый простой вариант
cat file | grep -E -v -f file2
file2
[^0-9]+23$
🖥 AsRock B550M Pro4 :: AMD Ryzen 5 3600 :: 16 GB DDR4 :: AMD Radeon RX 6600 :: XFCE
💻 ACER 5750G :: Intel Core i5-2450M :: 6 GB DDR3 :: GeForce GT 630M :: XFCE

Оффлайн Ввысь

  • Автор темы
  • Активист
  • *
  • Сообщений: 473
    • Просмотр профиля
Re: Найти по совпадению в столце
« Ответ #2 : 25 Января 2023, 15:18:37 »
Оставил так grep -w - поиск по точному совпадению.
« Последнее редактирование: 25 Января 2023, 17:33:26 от Ввысь »

Оффлайн ya1ov

  • Новичок
  • *
  • Сообщений: 4
    • Просмотр профиля
Re: Найти по совпадению в столце
« Ответ #3 : 25 Января 2023, 20:28:21 »
awk -F "|" 'NR==FNR{a[$0]; next} {found=0; for (i in a) if ($3 ~ i) {found=1; break} if (!found) print $0}' file2 file
« Последнее редактирование: 26 Января 2023, 08:47:29 от ya1ov »

 

Страница сгенерирована за 0.045 секунд. Запросов: 22.