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


Считаете, что Ubuntu недостаточно дружелюбна к новичкам?
Помогите создать новое Руководство для новичков!

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

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

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

  • Автор темы
  • Активист
  • *
  • Сообщений: 463
    • Просмотр профиля
Найти по совпадению в столце
« : 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Как искать совпадение только в определенном столбце?
Спасибо.

Оффлайн ALiEN175

  • Администратор
  • Старожил
  • *
  • Сообщений: 6094
  • Vamos a Bailar
    • Просмотр профиля
Re: Найти по совпадению в столце
« Ответ #1 : 23 Января 2023, 23:44:45 »
Если столбец последний, то самый простой вариант
cat file | grep -E -v -f file2
file2
[^0-9]+23$
ASUS P5K-C :: Intel Xeon E5450 @ 3.00GHz :: 8 GB DDR2 :: Radeon R7 260X :: XFCE
ACER 5750G :: Intel Core i5-2450M @ 2.50GHz :: 6 GB DDR3 :: GeForce GT 630M :: XFCE

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

  • Автор темы
  • Активист
  • *
  • Сообщений: 463
    • Просмотр профиля
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.056 секунд. Запросов: 25.