• XSS.stack #1 – первый литературный журнал от юзеров форума

Статья Merge Tool или как быстро удалить дубли в огромных файлах [by MEXAHHUK]

Xrenovi4

Скидди
Забанен
Регистрация
02.10.2018
Сообщения
197
Реакции
465
Пожалуйста, обратите внимание, что пользователь заблокирован
На hashkiller есть такая утилита - Merge Tool
Её описание есть на форуме, в офф теме разработчика: https://forum.hashkiller.co.uk/topic-view.aspx?t=5512
Программа удаляет дубли за доли секунды, к примеру для удаление дублей в файле 2.3 гигабайта - потребовалось 3-4 минуты времени. Она хорошо работает со всеми кодировками, не портит их, переводит в $HEX[] формат, затем удаляет дубликаты и возвращает как было.

В данном случае мы рассмотрим и настроим софт на удаление дублей.
Качаем, разархивируем, создаем файл remove_dubles с расширением .bat
В файле пишем:

Код:
App.Merge.exe o="rez_out.txt" t=4 "rez.txt"
pause

rez.txt - файл, в котором мы хотим удалить дубликаты.
rez_out.txt - файл, который мы получим в итоге.

Софт может объединять сразу несколько файлов и после удалять дубли, для этого просто вписываем нужные нам файлы:

Код:
App.Merge.exe o="rez_out.txt" t=4 "rez.txt" "rez2.txt" "rez3.txt"
pause

rez.txt - файл, в котором мы хотим удалить дубликаты.
rez2.txt - 2-й файл, в котором мы хотим удалить дубликаты.
rez3.txt - 3-й файл, в котором мы хотим удалить дубликаты.
rez_out.txt - общий файл, который мы получим в итоге.

Также можно прописать различные опции:
o=[out-file] - Выходной файл.
t=[threads] - Потоки, используется для ускорения сортировки вверх только.
c=[mem] - Используется для управления, сколько оперативной памяти для использования в МБ. По умолчанию 1024. блокированного в 3072.
min=[num] - Минимальная длина слова. По умолчанию = 1
max=[num] - Максимальная длина слова. По умолчанию = 4096.

Формат команды:
App.Merge.exe o="output-file.txt" t=4 [options] ... "word-list1.txt" "word-list2.lst" "directory1" ...

Для анализа отчета словесного списка:
App.Merge.exe r = "словарь-list1.txt"

Двойные кавычки необходимы для имени пути / файлов, которые содержат пробелы. Можно также указать пути к каталогам, если вы хотите объединить / сортировать множество файлов в папках.

Автор данной темы MeXaHHuk
 
Пожалуйста, обратите внимание, что пользователь заблокирован
для лини есть вариант?)
Ато с awk нормализировать, sort -u сортировать долго как-то)))
 
Апп мерже работает быстрее, чем sort, но потребляет больше виртуальной памяти (ваши игрушки могут тормозить).
.BAT для удаления дублей во всех файлах в папке
Код:
@echo off
for /F %%F in ('dir "*.txt" /B /OS') do %cd%\App.Merge.exe o="%%F_NoDouble.txt" t=2 "%%F"
pause
P.s. Разобрался. Меняем параметр t. Чем больше тем больше нагрузка на ПК и быстрее работает.
 
Последнее редактирование:
Как объединить множество .txt которые находятся в папках, а после удалить все дубли?
find . -name '*.txt' -exec cat {} \; > alltxts.out
cat alltxts.out | sort -u > uniq.txt
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх