Механизмы поиска могут быть различными. Конкретный механизм зависит от различных факторов, таких как, количество планируемых поисков, объем текстового файла, условия поиска и т.д. 1. Однократный поиск в соответствии с условиями задачи. В этом случае нет смысла в использовании сложных алгоритмов и/или предварительной подготовке файла. Чем сложнее алгоритм, тем больше будут затраты труда и времени на написание и отладку программы. Наилучшее решение - последовательный просмотр строк файла с поиском первого вхождения в строку заданного контекста. Большинство языков программирования имеет встроенную функцию или процедуру поиска подстроки в строке, например Pos() в языке Паскаль, поэтому задача сводится к единственному циклу "Повторять пока не встретился конец файла: читать строку, искать в строке контекст и что-то с ним сделать". 2. Многократный поиск в файле различных контекстов. Здесь используются специально разработанные методы, основанные на предшествующем построении дополнительных структур, таких, как индексы, деревья поиска и т.д. Их общий смысл в том, что для поиска сначала просматриваются эти вс структуры (которые, к тому же, упорядочены для ускорения поиска) и зачастую к самому файлу можно вообще не обращаться. Для понимания аналогии можно вспомнить поиск нужного слова в словаре. Сначала мы выбираем первую букву, затем ищем страничку, которая содержит слова, между которыми находится наше искомое, а потом просматриваем найденную страницу.
Существует множество алгоритмов поиска, самый легкий, но самый долгий - брут-форс. Полное перебирание всех символов строки. Например, есть строка 99 Bottles of beer on the wall и ищется подстрока (слово) the. Тогда идет полный перебор. Сравнивается первый символ слова (t) и каждый символ строки. Если символы совпали, то сравнивается следующий символ строки и следующий символ слова (h) и так далее. Если все символы слова совпали, то в строке оно содержится. Брут-форс - самый неэффективный алгоритм, т. к. время его работы линейно зависит от длины строки.