Блокнот удалить повторяющиеся строки

Обновлено: 21.11.2024

У вас есть заданный список, и вы хотите быстро и легко удалить дубликаты? Одним из возможных решений, бесплатным и эффективным, является использование Notepad++ [1], бесплатного текстового редактора, но, кроме того, он легкий и предлагает множество интересных функций.

Notepad++ удаляет повторяющиеся строки

У вас есть заданный список, и вы хотите быстро и легко удалить дубликаты?

Одним из возможных решений, бесплатным и эффективным, является использование Notepad++ [1], бесплатного текстового редактора, но, кроме того, он легкий и предлагает множество интересных функций.

Вам также потребуется установить подключаемый модуль TextFX. Для этого перейдите на SourceForge [2] и загрузите последнюю версию плагина (рис. 10). Затем вам просто нужно распаковать загруженный архив в папку установки Notepad++ (рис. 11).

После запуска Notepad++ у вас может быть файл, содержащий дубликаты (рис. 1).

Чтобы удалить их, в первый раз убедитесь, что параметр «+Sort выводит только УНИКАЛЬНЫЕ (в столбце) строки» (рис. 2) установлен, а затем выберите свои данные (рис. 3).

  • удалить дубликаты в режиме без учета регистра (рис. 4), в результате вы получите строки, содержащие те же буквы, что и другие удаленные строки (рис. 5),
  • удалить дубликаты в режиме с учетом регистра (Рис. 6), в результате вы получите строки, идентичные другим удаленным (Рис. 7).

Затем можно с помощью двух вновь созданных списков, скопировав их в разные файлы, сравнить их (рис. 8), в результате чего в первом файле отобразятся строки, которых нет во втором, а во втором — отображение строк, которых нет в первом файле (рис. 9).

Уникальная сортировка в Notepad++

Чтобы отсортировать уникальные строки в Notepad++, просто установите подключаемый модуль TextFX, выберите текст, в котором вы хотите сохранить уникальные строки и отсортировать их, а затем выберите параметр TextFX > Инструменты TextFX > Сортировать строки с учетом регистра (в столбцах). .

Убедитесь, что опция сортировки выводить только уникальные (по столбцам) отмечена, чтобы сохранить только уникальные записи и иметь полную операцию сортировки Notepad++ по удалению дубликатов.

Как удалить повторяющиеся строки в notepad++? Я вижу несколько примеров, но многим из них уже много лет, и решения сейчас не работают.

Похоже, у меня нет менеджера плагинов в 32-битном блокноте++ или TextFx Tools

Покажите, что вы пробовали и что именно не сработало. В противном случае кто-то может предложить то же самое.

4 ответа 4

Я предложил вам несколько возможных решений. Пожалуйста, простите меня, если я повторю что-то, что вы уже знаете. =)

TL;DR

Начиная с Notepad++ v7.7.1, Notepad++ имеет функцию под названием Удалить последовательные повторяющиеся строки, которая делает то же самое, что и два других решения, приведенных ниже (т. е. удаляет последовательные повторяющиеся строки).

Доступ к нему можно получить, выбрав Правка → Операции со строками → Удалить последовательные повторяющиеся строки.

См. ответ Бартлби ниже для примера регулярного выражения, которое будет дедуплицировать строки без сортировки.

Исходный ответ

Согласно комментарию @máté-juhász, принятый ответ на этот вопрос StackOverflow будет работать с данными вашего примера.

Откройте Поиск → Заменить ( Ctrl + H ) в Notepad++.

В поле "Найти что:" введите следующее регулярное выражение:

Оставьте поле "Заменить на:" пустым и обязательно установите флажок "Регулярное выражение" в параметрах "Режим поиска".

Когда вы будете готовы удалить свои строки, нажмите "Заменить все".

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

напр. Использование регулярных выражений

Использование уникального кода

В качестве альтернативы, при условии, что никакие другие варианты вам не подходят, если у вас есть порт Windows утилиты uniq на основе Unix, вы можете интегрировать ее в свой рабочий процесс с помощью Notepad++.

Короче говоря, uniq выполняет ту же функцию, что и регулярное выражение выше, но потенциально более надежным способом. Недостатком является то, что включение его в Notepad ++ — это что-то вроде взлома. Имея это в виду, если вы хотите попробовать, основные шаги описаны ниже.

Для начала вам потребуется копия uniq для Windows. Вам может быть доступно несколько вариантов, но для простоты я могу предложить пакет GnuWin32 CoreUtils, который включает uniq .В настоящее время вы можете загрузить упрощенный установщик, если не хотите самостоятельно загружать и объединять заархивированные версии компонентов пакета CoreUtils.

Совет: для каждого шага решения, включающего uniq , я бы не использовал пути с пробелами. Unix часто обрабатывает пробелы в именах каталогов не так, как Windows, поэтому утилиты, перенесенные из этой среды, могут иметь проблемы с ними.

Для справки: я не уверен, какие (если вообще есть) ограничения на размер файла могут применяться к сборке uniq для GnuWin32, но я часто использую его для текстовых файлов, содержащих как минимум несколько мегабайт данных (часто несколько сотен тысяч линии) с легкостью.

Использование uniq с Notepad++

После установки uniq поместите в пакетный файл что-то вроде следующих строк:

Сохраните этот пакетный файл в удобном для вас постоянном каталоге. Для справки я буду называть его uniq_npp.bat. Обратите внимание, что «temp» может быть любой папкой, но «tmp» и «temp» часто уже существуют в Windows. Точно так же "uniq_tmp.txt" может быть любым именем, которое вы хотите, при условии, что оно используется последовательно.

После сохранения файла uniq_npp.bat мы готовы интегрировать его функции в Notepad++. Для этого откройте меню Notepad++ Выполнить. ( F5 ) и введите в появившееся поле примерно следующее:

Вы можете проверить свою команду Notepad++ перед ее сохранением, если нажмете крайнюю левую кнопку "Выполнить".

В противном случае нажмите "Сохранить" и назовите команду соответствующим образом. Вы можете дать ему сочетание клавиш, если хотите, но это не обязательно. Нажмите "ОК", чтобы сохранить параметры команды и поместить ее в раскрывающееся меню Выполнить для дальнейшего использования.

напр. Запустить раскрывающееся меню

Предполагая, что это вас интересует, у меня есть очень краткий обзор деталей того, как работает решение uniq, в разделе «Примечания» в конце этого ответа.

Одна важная вещь, которую следует помнить об этих решениях с uniq, заключается в том, что для этого абсолютно требуется путь к файлу, сохраненному на диске (документ нельзя открыть только в Notepad++).

Это не проблема с существующим файлом, который вы открыли, но если вы создаете новый файл или изменяете существующий оригинал, вам нужно сначала сохранить его, прежде чем запускать файл uniq_npp.bat. В противном случае операция завершится ошибкой, и любые новые данные не будут отсортированы.

В качестве небольшого преимущества, вероятно, стоит упомянуть, что это ограничение на сохранение не распространяется на указанный выше параметр регулярного выражения.

Примечания

Предлагаемые решения (то есть исходное регулярное выражение и uniq ) требуют, чтобы повторяющиеся строки отображались непосредственно друг над другом для удаления, например:

Это означает, что важно отсортировать данные перед применением одной из этих операций. Я предполагаю, что вы уже делаете это, учитывая данные вашего примера, но это все равно стоит упомянуть.

Небольшое предложение: поскольку Notepad++ не имеет реальных сочетаний клавиш для встроенных операций сортировки строк, вы можете записать макрос, который поможет с сортировкой. В частности, вы можете записать операцию Правка → Выбрать все ( Ctrl + A ), а затем выбрать один из вариантов Правка → Операции со строками → Сортировать строки лексикографически.

Для решения uniq также может быть целесообразно записать операцию "Сохранить" в качестве последнего шага макроса сортировки. Также обратите внимание, что шаги для параметра регулярного выражения (открытие диалогового окна «Замена», ввод регулярного выражения и т. д.) также можно записать в удобный макрос.

Как работает решение uniq

Строка "Выполнить" вызывает командное окно ( cmd /k ), вызывает uniq_npp.bat и указывает путь к тому месту, где хранится текущий выбранный вами файл.

В uniq_npp.bat этот путь фиксируется с помощью подстановочного знака %*, передаваемого в uniq . Затем дедуплицированные данные из uniq перенаправляются ( > ) в «uniq_tmp.txt».

Наконец, пакетный файл открывает этот очищенный текст на новой вкладке Notepad++, а командное окно закрывается с помощью exit() .

Что касается сортировки, другой вариант — не использовать Notepad++ для сортировки всего вместе. Вы потенциально теряете некоторую гибкость в отношении параметров сортировки, но вы можете просто сортировать элементы в качестве дополнительного шага в пакетном файле с помощью команды сортировки Windows. Чтобы добавить этот шаг, вы можете изменить первую строку uniq_npp.bat следующим образом:

Это просто направляет отсортированные данные из sort в uniq . Как видите, sort теперь изначально захватывает путь к данным, а не uniq .

Обычный текстовый файл — это один из наиболее распространенных способов хранения типизированных данных на компьютере.Не только очень просто создать текстовый файл, но и невероятно легко отредактировать его, потому что это можно сделать с помощью чего-то такого простого, как Блокнот Windows. Текстовый файл также является универсальным форматом, что означает, что его можно читать на различных платформах, включая Windows, Mac, Linux, телефоны, планшеты и многое другое.

Если у вас есть текстовые файлы, которые вам нужно прочитать, или если вы объединили несколько текстовых файлов в один, чтобы упростить задачу, имеет смысл удалить все строки текста, дублирующие друг друга. Вы можете самостоятельно удалить все дубликаты вручную, но гораздо проще позволить этому процессу выполняться автоматически.

Здесь мы покажем вам несколько различных способов удаления повторяющихся строк из ваших текстовых файлов.

Используйте стороннюю утилиту для удаления повторяющихся строк

Простым и распространенным способом удаления повторяющихся строк из текстового файла является использование специальной сторонней утилиты.

<р>1. TextCrawler бесплатно

TextCrawler – очень мощная бесплатная программа, предназначенная в основном для поиска и замены данных в текстовых файлах. Несмотря на свою мощь, TextCrawler относительно прост в использовании, а опция удаления повторяющихся строк фактически находится в отдельном окне, называемом Блокнотом. Установите (или распакуйте установщик с помощью 7-Zip, чтобы сделать его переносимым) и запустите TextCrawler. Перейдите в меню Сервис > Блокнот или нажмите F2.

Вставьте текст в окно и нажмите кнопку "Выполнить". Параметр «Удалить повторяющиеся строки» уже должен быть выбран в раскрывающемся списке по умолчанию. Если нет, сначала выберите его. Нажмите «Сохранить», чтобы создать новый текстовый файл, или скопируйте и вставьте текст обратно в текстовый редактор. В раскрывающемся списке также есть другие параметры для удаления пробелов и сортировки текста в порядке возрастания или убывания. Повторяющиеся строки также должны соответствовать регистру и содержанию, которое нужно удалить.

<р>2. Удаление повторяющихся строк

Duplicate Lines Remover от компании NoVirus Thanks, занимающейся безопасностью, и имеет несколько полезных функций. По какой-то причине информация о программе была удалена с их веб-сайта, но, к счастью, официальная ссылка для скачивания все еще доступна. Доступен только установщик установки, но вы можете сделать программу переносимой с помощью Universal Extractor.

Чтобы удалить повторяющиеся строки, найдите файл или перетащите его в окно, нажмите «Проверить», и, если повторяющиеся строки будут найдены, нажмите «Исправить» и выберите имя для сохранения. Вы также можете выполнить пакетную обработку сразу нескольких файлов, в том числе во вложенных папках, используя вкладку «Сканирование файлов».

Имейте в виду, что он автоматически создаст резервные копии .bak и заменит исходные файлы обработанными файлами. Используйте поле маски и добавьте расширение файла, чтобы предотвратить обработку всего. Специальная версия командной строки также доступна в пакете для скриптов и более опытных пользователей.

<р>3. TextMechanic Офлайн

Вставьте текст, который нужно обработать, в окно TextMechanic перед нажатием кнопки «Удалить повторяющиеся строки». Затем также нажмите «Удалить пустые строки», иначе текст будет содержать пустые строки, дубликаты которых были удалены. Наконец, нажмите «Сохранить в буфер обмена», чтобы исправленный текст можно было вставить обратно в текстовый редактор. Этот инструмент чувствителен к регистру, поэтому строки должны быть идентичны как по регистру, так и по содержанию, если их нужно удалить.

<р>4. RemoveDup (изменено Raymond.cc)

Эта специализированная утилита с открытым исходным кодом является переносимой. Все, что вам нужно сделать, это запустить его и найти текстовый файл, а затем нажать «Продолжить». Разделенный файл будет выведен в указанное место с добавлением «_NoDuplicates» к имени файла. Процесс чувствителен к регистру, поэтому строка «raymondcc» не будет дублировать «Raymondcc». Поскольку RemoveDup — программа с открытым исходным кодом, мы внесли несколько обновлений и улучшений в исходную программу.

Просим направлять любые вопросы/отзывы об измененной версии в раздел комментариев в этой статье. Измененный исходный код включен в архив.

<р>5. Блокнот++

Notepad++ — многофункциональный и популярный текстовый редактор, в котором раньше не было встроенной функции удаления повторяющихся строк. Требовался дополнительный плагин под названием TextFX.Однако в более поздних версиях функция удаления повторяющихся строк из текстового файла теперь встроена непосредственно в программу.

Все, что вам нужно сделать, это щелкнуть меню «Правка» и перейти к «Операции с файлами». Есть два варианта; Удалить повторяющиеся строки и удалить последовательные повторяющиеся строки. Первый в значительной степени говорит сам за себя, и он просто удаляет все точные повторяющиеся строки из текста. Второй вариант удаляет строку только в том случае, если она имеет дубликат на следующей строке, в то время как другие строки между двумя дубликатами будут игнорироваться.

Функции меню дубликатов строк Notepad++ чувствительны к регистру. Вы также можете запустить простую операцию удаления, которая игнорирует регистр, используя поиск и замену (Ctrl+H). Вставьте «(?si)^(.+?\R)(?=(. +\R)?\1)» без кавычек в поле «Найти что:», убедитесь, что «Заменить на:» пусто, выберите режим поиска по регулярному выражению и нажмите «Заменить все». Последнее вхождение каждой повторяющейся строки в файле сохраняется.

PSPad — это еще один текстовый/кодовый редактор со встроенной функцией удаления повторяющихся строк. У него есть два варианта работы: с учетом регистра или без учета регистра.

Удалить повторяющиеся строки с помощью встроенных команд Windows

Используя комбинацию встроенных команд Windows, можно удалить повторяющиеся строки из текстовых файлов.

<р>6. Использование пакетного скрипта

Объединение этих команд в единый пакетный сценарий позволяет быстро и легко выполнять обработку. Это также может быть полезно, если на вашем компьютере есть какие-либо ограничения на запуск стороннего программного обеспечения. Сценарий, который мы используем, был найден на StackOverflow и изменен для упрощения использования.

Загрузите Zip-файл DeDupe и распакуйте его. Один BAT-файл чувствителен к регистру и не будет изменять строки, если их регистр также не идентичен, другой скрипт нечувствителен к регистру. Чтобы удалить повторяющиеся строки, перетащите текстовый файл в файл .BAT, и он автоматически обработает и выведет файл в той же папке с суффиксом _deduped. Строки не переупорядочиваются, а удаляются на месте, что идеально, если вы хотите сохранить исходный порядок строк.

Удалить повторяющиеся строки с помощью онлайн-сервиса

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

<р>7. PineTools Удалить повторяющиеся строки онлайн

PineTools – это веб-сайт, который мы держим в избранном, потому что он может похвастаться огромным количеством онлайн-инструментов для различных задач. Они варьируются от средств выбора цвета, инструментов даты/времени и генераторов (случайных) чисел до редакторов изображений, программных средств подсветки синтаксиса и математических калькуляторов. Существует почти 20 инструментов для работы с текстом и списками, одним из которых является удаление повторяющихся строк.

Просто вставьте текст в исходное текстовое поле, нажмите УДАЛИТЬ, и отфильтрованный текст появится в поле без повторяющихся строк. Нажмите «Выбрать все» и скопируйте его обратно в текстовый редактор. Есть варианты игнорировать регистр, преобразовывать в верхний/нижний регистр, игнорировать/удалять пустые строки и сортировать вывод в алфавитном порядке. Нажмите «Удалить» еще раз после изменения параметра, чтобы увидеть результат.

<р>8. ТекстМеханик

Этот веб-сайт не следует путать с инструментом TextMechanic Offline, потому что это два разных продукта, созданные разными людьми. TextMechanic имеет множество различных онлайн-инструментов для работы с текстом. Если вы хотите, чтобы все остальные инструменты были доступны не только для удаления повторяющихся строк, но и для одновременного использования, используйте блокнот All-in-One для работы с текстом.

Есть два способа разместить текст в окне; либо используйте кнопку «Загрузить файл», чтобы найти текстовый файл, либо нажмите синюю кнопку C, чтобы очистить текущий текст в окне и вставить свой собственный текст. Затем нажмите кнопку «Удалить повторяющиеся строки». Флажки «С учетом регистра» и «Удалить пустые строки» доступны, если этого требует ваш текст. Показать удалено показывает, какие строки были удалены в отдельном поле.

После этого нажмите кнопку "Сохранить как" или нажмите S, чтобы выделить весь текст, щелкните правой кнопкой мыши и скопируйте его (Ctrl+C), готовый для вставки в текстовый редактор.

Вы можете использовать 32-разрядную версию Notepad++ с подключаемым модулем TextFX для быстрого удаления дубликатов, удаления пустых строк и сортировки данных одной операцией! Это быстрый и простой способ получить желаемый результат всего за несколько секунд. И как при любой автоматизации: чем больше данных вы работаете, тем больше времени экономите 🤓

Быстрая версия:

  • Установите 32-разрядную версию Notepad++
  • Установите подключаемый модуль TextFX (он недоступен в 64-разрядной версии Notepad++)
  • Включить сортировку только для UNIQUE
  • Нажмите Сортировать строки с учетом регистра.

Удалить дубликаты, удалить пустые строки и отсортировать данные за одну операцию

В этом примере у нас есть список типов данных, используемых в таблице SQL Server. Мы хотим найти все используемые уникальные типы данных, а также отсортировать их по алфавиту.

<р>1. Щелкните TextFX → Инструменты TextFX → Включить сортировку, чтобы вывести только УНИКАЛЬНЫЕ (в столбце) строки:

<р>2. В окне Notepad++ вставьте текст, из которого вы хотите удалить дубликаты и пустые строки. В этом примере у нас есть 500 строк, и половина из них пуста:

<р>3. Выделите весь текст, нажмите TextFX → Инструменты TextFX → Сортировать строки с учетом регистра (в столбце) или Сортировать строки без учета регистра (в столбце):

<р>4. Тадааа! 🥳 Теперь мы убрали дубликаты и пустые строки, а данные отсортировали по алфавиту. В этом примере у нас получилось всего 15 строк:

Обзор

В 32-разрядной версии Notepad++ вы можете использовать подключаемый модуль TextFX для быстрого удаления дубликатов, удаления пустых строк и сортировки данных за одну операцию! Во-первых, убедитесь, что у вас включена опция Сортировать только UNIQUE. Затем используйте функцию сортировки строк с учетом регистра [in].

Вот оно! Это очень удобная функция, но она несколько спрятана в меню. Однако, как только вы его найдете, это может сэкономить вам много времени 🤓

Поделиться или прокомментировать?

Об авторе

Катрин Вильхельмсен — обладательница статуса Microsoft Data Platform MVP, сертифицированный эксперт BimlHero, международный спикер, писатель, блоггер, организатор и постоянный волонтер. Она любит данные и программирование, а также учить и делиться знаниями — ну и научная фантастика, кофе, шоколад и коты 🤓

Читайте также: