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