Я работаю на ОС Debian / GNU Linux и мне нравится использовать короткую команду оболочки (терминал или скрипт extern).
Моя цель: у меня есть список слов в foo.txt, например
---- foo.txt ----
dog
cat
mouse with hat
---- /foo.txt ----
и хотите сравнить этот список с bar.txt (подразумевается обычный текст с некоторыми абзацами).
Я бы хотел провести два матча:
все слова в каждой строке должны совпадать (например, «мышь с шляпой» и просто «шляпа»)
только первое совпадение каждой строки должно совпадать
Относится к первой проблеме:
Мой первый код (пока что для командной строки) и мои проблемы:
for i in foo.txt; do fgrep -f foo.txt bar.txt
просто соответствует первому слову в списке.
Теперь я думаю, что я должен использовать что-то вроде
for i in foo.txt; do fgrep -e <some-kind-of-regexp> -f foo.txt bar.txt
но я увяз с регулярным выражением: (
Относится ко второй проблеме
Для остановки grep я знаю только опцию -m.
for i in foo.txt; do fgrep -m 1 -f foo.txt bar.txt
останавливается после первого с любыми совпадениями. Но мне нравится что-то вроде «искать любое первое совпадение и останавливаться после просмотра всего списка».