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