Romul81
Advanced Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору IvanStepanov (Пост) Цитата: А если голову включить? Или вы хотите, чтобы я разжёвывал самые очевидные вещи? Ну вот сами подумайте: могут ли одинаковые куски текста встречаться в разных файлах, скачанных из инета? Естественно могут. Как иначе? | Вы заставили меня улыбнуться)) Спасибо)) Если серьёзно - то это вовсе не так очевидно. Всё зависит от контента, с которым вы работаете. Дубликаты файлов - да, согласен, частое явление. А чтоб блоки текста - тут уже может быть, а может не быть... Ладно, это всё лирика. Вам нужна программа (скрипт), которая делала бы следующее (распишу программную логику): 1) Принимала на вход каталог с текстовыми файлами 2) Создавала временный файл, конкатенируя эти файлы (с записью офсетов куда-нибудь в кэш / лог) 3) "Линейно", либо с использованием специализированной библиотеки, искала повторяющиеся блоки текста, возвращая массив офсетов с найденными совпадениями (конкретная реализация может быть как "простейшей", так и "продвинутой", в зависимости от используемого модуля) 4) Конвертировала найденные офсеты в оффсеты из кэша/лога, соотнося их с оригинальными, неконкатенированными файлами 5) Выводила соответствующий результат. Трудности: 1) Всё это дело написать 2) В зависимости от объёма ваших данных и алгоритма поиска дубликатов, весь процесс может быть очень затратным в плане потребляемых ресурсов компьютера. Конкатенированный файл должен целиком находиться в оперативной памяти - здесь нет других вариантов. Точнее, есть, но они кратно усложнят реализацию - не уверен, что даже опытные программисты возьмутся за эту задачу. Возможно реализовать на: - из скриптовых языков точно подойдёт Python, JS под Nodejs, Perl. Всякая экзотика типа Ruby, тоже, вероятно, подойдёт. - по AutoIt/AutoHotKey лучше пояснит AZJIO, но что-то подсказывает, что узким горлышком будет производительность - AutoIt, по крайней мере, чрезвычайно медленный на больших объёмах данных. Работа с массивами - тоже не его конёк. Объектов, вроде, нет. Также, сомневаюсь, что под него удастся найти качественную специализированную под эту задачу (поиска дубликатов) UDF (модуль). - компилируемые языки. C, C++, Java, .NET, etc. - на них можно всё. Кто что знает, тот в том и работает. Ну и завершающий вопрос - при чём здесь регулярные выражения?.. |