LINUX.ORG.RU

Поиск строки в файле


0

2

Есть такая задача (чем-то напоминает то, чем занимается grep, но не совсем).

Есть, значит, некоторый входной набор строк.

И есть много-много файлов (допустим, все они в одном каталоге) с большим количеством других строк. Каждую строку из исходного набора надо искать во всех этих файлах, и если где-то нашёл - выписать, соответственно, что за строка (номер), и в каком файле она находится.

Задача усложняется тем, что строки в этих файлах могут совпадать не полностью. то есть, например, исходная строка AAABBBCCC. А в файле я наткнулся на AAADBBBCCC. Откуда-то появился символ 'D'. :) Вот такие случаи мне тоже надо соответствующим образом обрабатывать. Нечёткий поиск.

Строки, разумеется, произвольной длины.

Ну и этих «левых» символов может быть несколько (как правило немного), ну для начала пусть это будет не более одного.

Как примерно решить эту задачу (без встраивания «левых» символов) я знаю... Вопросов у меня всего два.

1) может, в какой-то литературе более подробно и более чётко описывается этот алгоритм? чтобы я не перемудрил чего... и время себе сэкономил

2) какой ЯП для этой задачи лучше всего подходит? Думал писать на python, но меня терзают смутные сомнения, что это будет тормоз. :) на C писать отказываюсь. С другими ЯП я плоховато знаком (ну кроме тех, что определённо не подходят под это).

Кстати, у python ещё минус в том, что в последней версии под хранение строк используются двухбайтовые строки юникода. в данном случае они мне не нужны, зато занимают больше памяти, а память мне надо экономить. :)

Ответ на: комментарий от pseudo-cat

ну как же причём? :)

на 10 минут =) ну значит я со своей ленью справлюсь за 10 часов =)

Говорю, если без искажений - то задача действительно простая... а если с ними. и тем более если я не знаю, какие они могут быть - то тогда AI очень даже причём... их же надо как-то на лету определять.

BattleCoder ★★★★★ ()

Можно ещё попробовать регекспы.

Bad_ptr ★★★★ ()

в оппосте полная дезинформация на счет python

trashymichael ★★★ ()

man grep 7 regex 1 perlre

anonymous ()
Ответ на: комментарий от kim-roader

Отличное начало. Один граничный случай ты покрыл
Теперь прикрути это к строкам произвольной длины и фильтр 'qwer.qwer' к строке без искажений ('qwerqwer')

zolden ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.