Як зачепити список слів


84

У мене є файл A, у якому 100 слів, розділених новими рядками. Я хотів би здійснити пошук у файлі B, щоб побачити, чи не зустрічається в ньому БУДЬ-ЯКЕ слово із файлу A.

Я спробував наступне, але мені не вдається:

grep -F A B

Відповіді:


116

Вам потрібно скористатися опцією -f:

$ grep -f A B

Параметр -Fвиконує фіксований пошук рядків, де, як -fі для зазначення файлу шаблонів. Вам може знадобитися і те, і інше, якщо файл містить лише фіксовані рядки, а не регулярні вирази.

$ grep -Ff A B

Можливо, вам також знадобиться -wваріант зіставлення лише цілих слів:

$ grep -wFf A B

Прочитайте man grepопис усіх можливих аргументів та їх дії.


4
Чи є -F просто оптимізацією, якщо ви не хочете використовувати регулярні вирази?
Фенікс

А як щодо пошуку всіх випадків слів у файлі A у дереві каталогів B , перерахувавши лише імена файлів усіх збігів у B?
ревнивий хакер

2

Щоб знайти дуже довгий список слів у великих файлах, може бути ефективніше використовувати egrep:

remove the last \n of A
$ tr '\n' '|' < A > A_regex
$ egrep -f A_regex B
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.