У меня есть файл со списком ключевых слов, которые я хотел бы найти (pattern.txt):
foo
foo_bar
asdf
asdf_fdsa
Некоторые из этих ключевых слов являются подстроками других, поэтому я использую параметр -w для grep для поиска полных слов.
В этом примере я просто использую копию файла шаблона для данных для поиска (data.txt).
Когда я запускаю grep -wf pattern.txt data.txt
Я ожидаю, что все шаблоны будут найдены, но результатом будут только два меньших шаблона:
foo
asdf
Однако, если я переупорядочу файл шаблона, чтобы перечислить длинные слова перед короткими словами :
foo_bar
foo
asdf_fdsa
asdf
grep -wf pattern.txt data.txt
вернет все четыре совпадения. Что дает? Почему порядок файла шаблона меняет вывод здесь?
После исследования я могу сказать, что -f является сокращением для записи grep -e ... -e ... etc.
, и могу подтвердить, что это поведение отражается при записи в этой форме, но я не могу найти никакой информации об этом поведении, зависящем от порядка. Спасибо за любую информацию.
Изменить: в macOS с BSD grep 2.5.1-FreeBSD