У меня есть файл A, содержащий 100 слов, разделенных новыми строками. Я хотел бы найти файл B, чтобы увидеть, есть ли в нем ЛЮБОЙ из слов в файле A.
Я пробовал следующее, но не работал со мной:
grep -F A B
Ответ 1
Вам нужно использовать опцию -f:
$ grep -f A B
Параметр -f выполняет фиксированный поиск строк, где -f предназначен для указания файла шаблонов. Вам может понадобиться и то, и другое, если файл содержит только фиксированные строки, а не регулярные выражения.
$ grep -Ff A B
Вам также может понадобиться опция -w для соответствия только целым словам:
$ grep -wFf A B
Прочитайте man grep для описания всех возможных аргументов и того, что они делают.
Ответ 2
Чтобы найти очень длинный список слов в больших файлах, более эффективно использовать egrep:
remove the last \n of A
$ tr '\n' '|' < A > A_regex
$ egrep -f A_regex B