среда, 14 декабря 2011 г.

Программа для удаления одинаковых строк из текстовых файлов

Понадобилось как-то удалить дубликаты в куче очень больших txt, больше 20 миллионов строк у всех, так что KeyWordKeeper'ом не получилось, ну и недолго думая, я написал на C# простенький скрипт для этого, тупо используя стандартный Array.Sort()

Тут конечно есть недостаток (или достоинство) - результат получается отсортированный по алфавиту, но мне например это не важно. Еще отличие от kwk - повторы сохраняются в отдельный файлик.

Сегодня причесал немного скрипт, добавил автоопределение кодировки (входящие файлы могут быть или в win1251 или utf-8) и вот решил выложить.

Собственно, скрипт качать здесь
(жмем там кнопочку download и получаем bat-файл)

Как пользоваться:
- передать батнику файл аргументом (берем свой текстовый файл и просто пересовываем его мышкой на smf_sortcleaner.bat в проводнике windows), все остальное он сам сделает и создаст в папке с собой два файла, очищенный и повторы. А если просто запустить скрипт, без аргументов в смысле, то он обработает все .txt в папке с собой.

Требует для работы .net framework 2.
Исходный код открыт, можете переписывать под себя хоть в блокноте.

29 комментариев:

  1. Камрад! Ты не представляешь, как мне облегчил жизнь!
    Премного благодарен! Респект!

    ОтветитьУдалить
  2. Перепробовал много программ под винду, предназначенных для удаления дубликатов, так толком ни одна и не справилась и единственным решением оставалось ставить линукс систему и копатся там в терминале.
    А тут случайно наткнулся на вашу статью которая меня просто выручила, как я сам не додумался до АСорт.
    Спасибо Вам огромное!

    ОтветитьУдалить
  3. Очень, очень был рад такому скрипту, спасибо!

    ОтветитьУдалить
  4. Спасибо. Очень нужная вещь

    ОтветитьУдалить
  5. Огромное спасибо за этот скрипт!

    ОтветитьУдалить
  6. Спасибо. Очень нужная вещь,очень был рад такому скрипту, спасибо!

    ОтветитьУдалить
  7. А можете создать батник на этой основе, чтобы например все строки дубликатов и их дубликаты перемещались в отдельный текстовый документ.
    например есть тектовый документ с некой базой:
    abcde
    abcde
    sdret
    sdeen
    derty
    derty
    derty
    gytuo
    frtyh
    lmnkh
    Из этой базы выловить и изъять все одинаковые строки, затем переместить их в другой текстовый документ:
    abcde
    abcde
    derty
    derty
    derty
    Заранее спасибо.

    ОтветитьУдалить
  8. Мужик ты мне просто жизнь облегчил!!!!!!!!!

    ОтветитьУдалить
  9. Красавец!!!!!! Спасибо тебе огромное!!!!
    С уважением!!!

    ОтветитьУдалить
  10. Хорошая вещь!!!!
    а его можно настроить,чтобы он из первого файла удалял те слова,которые будут записаны во второй?

    ОтветитьУдалить
  11. Перезалейте пжл!

    ОтветитьУдалить
  12. Низкий тебе поклон добрый человек:)

    ОтветитьУдалить
  13. На файле размером в 5G и оперативке в 4G - не пошло.

    ОтветитьУдалить
  14. Спасибо! Unified List Manager выдал ошибку, а этот скриптик справился с файлом (700 мб).

    ОтветитьУдалить
  15. класс ! спасибо !

    ОтветитьУдалить
  16. Спасибо, ОЧЕНЬ помог

    ОтветитьУдалить
  17. Спасибо тебе, добрый человек! Надеюсь, ты заработал (украл, нашёл, подарили...) 100500 единиц бабла и именно поэтому больше не пишешь. :)

    ОтветитьУдалить
  18. Спасибо! Класс!

    ОтветитьУдалить
  19. с файлом в 1,5 Гиг. не справился вылетает ошибка программа не работает.Железо 8 гиг.оперативки 6-ти ядерный проц.

    ОтветитьУдалить
  20. Очень благодарен! Ты мне сделал жизнь легче в 100 раз!

    ОтветитьУдалить
  21. Ну и на фига эта хрень нужна ?
    Вот зачем ?
    Ведь тоже самое делается в cmd в одну строчку.

    ОтветитьУдалить
  22. супер скрипт! благодарочка от меня!!!

    ОтветитьУдалить
  23. Хорошая идея - запихнуть функционал в батник. Для простых манипуляций еще нашел прогу - Duplicat Remover by teso (http://ebaza.pro/file/13546327). В нагрузку к KeyWordKeeper...

    ОтветитьУдалить