Удаление повторяющихся строк из текста
Удаляйте повторяющиеся строки из текста онлайн — бесплатно, мгновенно, 100% в браузере. Игнорируйте регистр или пробелы, оставляйте первое или последнее вхождение, считайте удалённые дубликаты. Также сортировка и очистка.
Что значит удалять повторяющиеся строки?
Удаление повторяющихся строк — дедупликация, или «dedupe» — означает просканировать блок разделённого переводами строк текста и сохранить только одну копию каждой отдельной строки. Это одна из самых частых задач очистки, с которой сталкивается любой, кто работает с данными: свернуть рассылку, накопившую повторы, свести лог к уникальным сообщениям, найти отдельные значения в колонке таблицы или объединить несколько списков в один чистый набор.
Интересный вопрос — что считается дубликатом. Побайтовое сравнение — строгий ответ, но реальные данные более беспорядочны. Две строки могут выглядеть идентично, но различаться завершающим пробелом или отличаться лишь регистром — `Error` против `error`. Этот инструмент позволяет вам решать: по умолчанию он игнорирует регистр, и вы можете включить сравнение без учёта пробелов, чтобы строки сопоставлялись по их обрезанной форме в нижнем регистре. Так вы удаляете дубликаты по смыслу строки, а не по её точной кодировке, что почти всегда и есть то, что вам на самом деле нужно.
Другое решение — какую копию оставить. Сохранение первого вхождения сохраняет исходный порядок и является значением по умолчанию; сохранение последнего полезно, когда более поздние записи замещают ранние. В любом случае результат детерминирован, а живой значок статистики говорит вам ровно то, сколько дубликатов было удалено, так что вам никогда не придётся слепо доверять инструменту.
Удаление дубликатов естественно сочетается с сортировкой и другой очисткой. Этот инструмент сводит их в одну панель: удалить дубликаты, затем опционально отсортировать, обрезать пробелы, отбросить пустые строки, развернуть или добавить номера строк. Когда сортировка — главное событие, используйте сопутствующий инструмент Сортировка строк текста, который использует тот же движок. Чтобы посчитать строки и слова в вашем тексте, используйте Счётчик слов; чтобы увидеть, что изменилось между двумя версиями списка, используйте Сравнение текста; а чтобы нормализовать регистр перед удалением дубликатов, используйте Конвертер регистра.
Всё работает целиком в вашем браузере без загрузок, поэтому удаление дубликатов из конфиденциального списка ровно так же приватно, как его локальное редактирование. Вставьте — и уникальный результат готов к копированию за секунду.
Input: alice@example.com bob@example.com alice@example.com ALICE@example.com Exact dedupe (case-sensitive): alice@example.com bob@example.com ALICE@example.com Case-insensitive dedupe (default): alice@example.com bob@example.com ← ALICE collapsed into alice
Ключевые возможности
Удаление дубликатов с сохранением порядка
По умолчанию сохраняет каждую уникальную строку один раз в исходном порядке — то же поведение, что у `awk '!seen[$0]++'`, но без терминала. Ваш список остаётся в той последовательности, в какой вы его вставили, только без повторов.
Оставить первое или последнее вхождение
Выберите, какое появление каждой строки выживает — первое или последнее. Оставить-первое сохраняет порядок для общей очистки; оставить-последнее идеально, когда более поздние записи переопределяют ранние, вроде значений конфига или окружения.
Сопоставление без учёта регистра
По умолчанию `Error`, `error` и `ERROR` схлопываются в одну строку — естественный выбор для большинства списков. Включите Учёт регистра, когда регистр значим и дубликаты должны совпадать точно.
Сопоставление без учёта пробелов
Игнорировать пробелы по краям ловит невидимые дубликаты, различающиеся лишь завершающим пробелом или табом — причина номер один, по которой «идентичные» строки не удаляются как дубликаты в данных, вставленных из таблиц и PDF.
Живой счёт дубликатов
Значок статистики показывает `12 строк → 9 строк · 3 дубликата удалено` по мере ввода. Вы всегда точно знаете, сколько повторов было свёрнуто — никаких догадок, действительно ли инструмент что-то сделал.
Удаление дубликатов + сортировка за один проход
Включите порядок сортировки, чтобы за один шаг получить уникальный, упорядоченный по алфавиту (или естественно, или по длине) список. Сначала выполняется удаление дубликатов, затем сортировка, поэтому ничего не теряется, а вывод одновременно чист и упорядочен.
Переключатели очистки
Та же панель также обрезает пробелы, отбрасывает пустые строки, разворачивает порядок и нумерует результаты. Наложите любой из них поверх удаления дубликатов — и хаотичный вставленный список станет чистым, уникальным, готовым к вставке выводом в одном месте, без скриптов.
Приватность 100% в браузере
Ваш текст никогда не покидает страницу — никаких загрузок, логирования, аналитики. Безопасно для списков email, логов доступа и конфиденциальных данных. Проверьте сами во вкладке Network: удаление дубликатов даёт ноль запросов.
Примеры удаления повторяющихся строк
Удалить точные дубликаты
apple banana apple cherry banana
apple banana cherry
Поведение по умолчанию: каждая строка сохраняется один раз, при первом появлении, а более поздние точные повторы отбрасываются. Исходный порядок сохраняется. Значок статистики сообщает `5 строк → 3 строки · 2 дубликата удалено`.
Игнорировать регистр
Error error ERROR Warning
Error Warning
С выключенным Учётом регистра (по умолчанию) `Error`, `error` и `ERROR` трактуются как одна и та же строка, поэтому сохраняется только первая. Включите Учёт регистра, чтобы сохранить все три как отдельные записи.
Игнорировать пробелы по краям
apple apple banana banana
apple banana
Включите Игнорировать пробелы по краям, чтобы `apple` и ` apple ` сравнивались как равные. Это ловит невидимые дубликаты, которые терзают данные, скопированные из таблиц, PDF и терминалов, где завершающие пробелы прокрадываются незаметно.
Оставить последнее вхождение
v1 v2 v1 v3
v2 v1 v3
Переключите Какое вхождение оставить на Последнее, и финальное появление каждой строки выживает, в своей последней позиции. Здесь сохраняется второй `v1`, а первый удаляется. Полезно, когда более поздние записи переопределяют ранние, вроде переменных окружения или переопределений конфига.
Удаление дубликатов и сортировка вместе
dog cat dog bird cat
bird cat dog
Включите сортировку По возрастанию, чтобы за один шаг получить чистый, уникальный, упорядоченный по алфавиту список. Сначала выполняется удаление дубликатов, затем сортировка, поэтому вывод одновременно уникален и упорядочен — идеально для превращения беспорядочной вставленной колонки в аккуратный набор.
Удалить пустые строки и дубликаты
alpha beta alpha gamma
alpha beta gamma
Включите Удалить пустые строки вместе с удалением дубликатов, чтобы отбросить пустые строки и повторы за раз. Значок статистики разделяет их: `6 строк → 3 строки · 1 дубликат удалён · 2 пустых удалено`.
Посчитать, сколько дубликатов существует
a b a a c b
a b c
Даже если вам важен только счёт, удаление дубликатов даёт ответ: значок статистики показывает `6 строк → 3 строки · 3 дубликата удалено`. Быстрый способ узнать, сколько повторений прячется в списке, не подсчитывая вручную.
Объединить два списка в уникальные записи
red green blue green yellow red
red green blue yellow
Вставьте два списка подряд и удалите дубликаты, чтобы получить объединение — каждую отдельную строку, без повторов, с сохранением порядка первого появления. Самый быстрый способ объединить рассылки, наборы тегов или списки ID без формулы таблицы.
Как удалить повторяющиеся строки
- 1
Вставьте или введите ваши строки
Поместите текст в поле ввода. Каждый перевод строки — отдельная строка. Дубликаты удаляются мгновенно по мере ввода — кнопки отправки нет. Завершающий перевод строки игнорируется, поэтому он не будет считаться лишней пустой строкой.
- 2
Выберите, что считается дубликатом
Оставьте Учёт регистра выключенным, чтобы трактовать `Foo` и `foo` как одно, или включите, чтобы держать их раздельно. Включите Игнорировать пробелы по краям, чтобы поймать строки, различающиеся только лишними пробелами.
- 3
Выберите, какое вхождение оставить
Какое вхождение оставить по умолчанию Первое, сохраняя исходный порядок. Переключите на Последнее, когда финальное появление каждой строки должно побеждать — полезно для переопределений, где более поздние записи замещают ранние.
- 4
Добавьте сортировку или очистку при необходимости
Включите порядок сортировки, чтобы упорядочить уникальный результат по алфавиту, или включите Удалить пустые строки и Обрезать каждую строку, чтобы привести список в порядок в том же проходе. Значок статистики показывает эффект каждого переключателя.
- 5
Скопируйте уникальный результат
Кликните Copy, чтобы поместить вывод без дубликатов в буфер обмена. Используйте Reset, чтобы очистить оба поля, или Sample, чтобы загрузить пример списка. Ничего не загружается ни в какой момент процесса.
Частые ошибки удаления дубликатов
Пробелы прячут дубликаты
Строки, которые выглядят идентично, но различаются завершающим пробелом или табом, не являются точными дубликатами, поэтому они выживают. Включите Игнорировать пробелы по краям, чтобы сравнивать по обрезанной форме. Это самый частый сюрприз удаления дубликатов, особенно с данными таблиц и PDF.
Exact match ("apple " ≠ "apple"):
apple
apple ← trailing space, kept as unique
banana Ignore whitespace: apple banana
Различие в регистре трактуется как уникальное
С включённым Учётом регистра `Error` и `error` — разные строки, и обе выживают. Если вы имели в виду, что они одинаковы, выключите Учёт регистра (по умолчанию). И наоборот, выключение его, когда регистр значим, может слить строки, которые вы хотели держать раздельно.
Case-sensitive on: Error error ERROR ← all three kept
Case-insensitive (default): Error ← the rest collapse
Ожидание, что несоседние дубликаты останутся
В отличие от командной `uniq`, этот инструмент удаляет дубликаты где угодно в списке, а не только соседние — поэтому вам не нужно сначала сортировать. Если вы на самом деле хотели схлопнуть только последовательные повторы, этот инструмент не подходит; отсортируйте или перестройте ваши данные.
Assuming uniq behavior (adjacent only): a b a ← expected to survive, but it's removed
Full dedupe (this tool): a b ← the later 'a' is removed anywhere it appears
Путаница удаления пустых строк с удалением дубликатов
Удаление дубликатов схлопывает повторяющиеся пустые строки, но оставляет одну; оно не удаляет все пустые. Чтобы отбросить каждую пустую строку, включите Удалить пустые строки. Значок статистики сообщает два счётчика отдельно, так что вы можете понять, что было удалено — пустые или настоящие дубликаты.
Dedupe only (one blank kept): alpha (blank) beta
Dedupe + Remove empty lines: alpha beta
Удаление повторяющихся строк: сценарии
- Очистка списков email и контактов
- Вставьте экспортированную рассылку, накопившую повторы, и получите обратно уникальный набор. Включите сопоставление без учёта регистра и пробелов, чтобы `Bob@x.com`, `bob@x.com` и `bob@x.com ` все схлопнулись в один адрес.
- Сведение логов к уникальным сообщениям
- Удалите дубликаты из шумного лога, чтобы увидеть отдельные строки ошибок или событий без повторения. Оставить-последнее удобно, когда самое недавнее появление каждого сообщения важнее первого.
- Поиск уникальных значений в колонке
- Скопируйте колонку из CSV или таблицы, удалите дубликаты — и вывод будет набором отдельных значений, со счётом того, сколько дубликатов существовало, что заодно служит быстрой проверкой кардинальности. Он также позволяет найти повторяющиеся строки и убрать дублирующиеся строки из вставленной колонки без формулы таблицы.
- Объединение списков без повторов
- Вставьте два или более списка подряд и удалите дубликаты, чтобы получить их объединение: каждую отдельную строку, без повторов, в порядке первого появления. Быстрее формулы таблицы для разового слияния тегов, ID или имён.
- Удаление дубликатов из словарей для безопасности
- Объединяйте и чистите словари паролей, списки поддоменов или словари для фаззинга полностью офлайн. Поскольку каждая операция локальна, чувствительные данные безопасности остаются на вашей машине и никогда не отправляются во внешний сервис.
- Приведение в порядок списков импорта или зависимостей
- Удалите повторяющиеся операторы импорта, имена пакетов или записи зависимостей, закравшиеся при копировании-вставке. Добавьте порядок сортировки, чтобы получить канонический, уникальный список, который держит будущие diff'ы маленькими.
- Подготовка данных для анализа
- Уберите повторы перед подсчётом, построением графиков или загрузкой данных, чтобы дубликаты не перекашивали ваши результаты. Соедините со Счётчиком слов, чтобы измерить очищенный список, или со Сравнением текста, чтобы сравнить его с другой версией.
- Удаление дубликатов из списков ключевых слов для SEO
- Экспорты исследования ключевых слов полны почти-дубликатов. Удалите точные повторы здесь, опционально в нижнем регистре и обрезанные, чтобы получить чистый уникальный набор ключевых слов перед группировкой или сопоставлением его со страницами.
Как работает удаление дубликатов
- Удаление дубликатов через хеш-множество
- Строки удаляются через хеш-множество (JavaScript `Set` или `Map`), ключом которого служит форма сравнения каждой строки, что даёт линейное время даже для больших списков. Ключ каждой строки вычисляется один раз и ищется за константное время.
- Нормализация ключа сравнения
- Ключ, используемый для сопоставления, выводится из строки: сначала обрезается, если включено Игнорировать пробелы по краям, затем приводится к нижнему регистру, если Учёт регистра выключен. В выводе появляется исходная строка — а не нормализованный ключ, — поэтому регистр и пробелы выживших сохраняются.
- Оставить-первое против оставить-последнее
- Оставить-первое проталкивает строку в результат при первом появлении её ключа и пропускает более поздние повторы. Оставить-последнее вычисляет финальный индекс каждого ключа и сохраняет только строку по этому индексу, поэтому выжившая копия сидит в своей последней позиции, а общий порядок всё ещё следует вводу.
- Разбиение на строки (CRLF / LF / CR)
- Строки разделяются по любому соглашению перевода строки — `\r\n` (Windows), `\n` (Unix) или `\r` (классический Mac) — поэтому смешанный или вставленный ввод просто работает. Один завершающий перевод строки отбрасывается перед обработкой, чтобы файл, заканчивающийся переводом строки, не регистрировал фантомный пустой дубликат внизу.
- Детерминированный порядок конвейера
- Конвейер выполняется в заданной последовательности — обрезка пробелов, затем удаление пустых строк, затем удаление дубликатов, затем любая сортировка или перемешивание, затем разворот, затем нумерация строк. Поскольку дубликаты схлопываются перед опциональным шагом сортировки, включение порядка сортировки переупорядочивает уникальный набор, никогда не отбрасывая отдельную строку.
- Раздельные счётчики дубликатов и пустых
- Значок статистики отслеживает удалённые дубликаты и удалённые пустые строки независимо, вычисляя их как дельту счёта строк до и после каждого этапа. Это позволяет вам увидеть, например, `1 дубликат удалён · 2 пустых удалено`, а не единое совмещённое число.
- В браузере, без воркеров
- Всё удаление дубликатов выполняется в основном потоке вашего браузера без серверных обращений. Типичные списки завершаются мгновенно; поскольку алгоритм линеен и основан на множестве, производительность изящно масштабируется до очень больших вводов, не подвешивая страницу.
Лучшие практики удаления дубликатов
- Обрезайте пробелы, чтобы поймать скрытые дубликаты
- Самая частая причина выживания дубликатов — невидимый завершающий пробел. При удалении дубликатов из данных, вставленных из таблиц, PDF или терминалов, включите Игнорировать пробелы по краям, чтобы строки сравнивались по их обрезанной форме. Если счёт удалённых дубликатов ниже, чем вы ожидаете, обычно причина в пробелах.
- Решайте о чувствительности к регистру осознанно
- Для email, тегов и человекочитаемых списков держите Учёт регистра выключенным, чтобы `Foo` и `foo` схлопнулись. Включайте его только для данных, где регистр значим, вроде идентификаторов или хешей, где `A1B2` и `a1b2` — действительно разные значения. Неверный выбор тихо меняет, какие строки выживут.
- Используйте оставить-последнее для семантики переопределения
- Когда более поздние записи должны побеждать — переопределения конфигурации, переменные окружения, лог, где важен новейший статус — переключите Какое вхождение оставить на Последнее. Для общей очистки списка, где порядок должен сохраняться сверху, оставьте значение по умолчанию Первое.
- Удаляйте дубликаты перед подсчётом или анализом
- Повторы перекашивают счётчики, графики и агрегаты. Сначала удалите дубликаты, затем измеряйте. Значок статистики заодно служит быстрой проверкой кардинальности: разница между вошедшими и вышедшими строками говорит, сколько повторения несли данные.
- Сортируйте после удаления дубликатов для канонического списка
- Если нужен стабильный, сравнимый список — для файла конфига, манифеста или diff — включите порядок сортировки вместе с удалением дубликатов. Уникальный, отсортированный список даёт минимальные diff'ы и его легко сравнить с другой версией через Сравнение текста.
- Проверяйте живым счётчиком перед копированием
- Взгляните на значок статистики перед копированием. `12 строк → 9 строк · 3 дубликата удалено` подтверждает, что инструмент сделал то, что вы задумали. Если числа выглядят не так — ноль удалено, когда вы ожидали повторов — пересмотрите настройки регистра и пробелов.
Часто задаваемые вопросы
Что делает этот инструмент?
Оставляет ли он первое или последнее вхождение дубликата?
Загружается ли мой текст куда-либо?
Как удалить дубликаты, но игнорировать регистр?
Почему мои визуально идентичные строки не удаляются как дубликаты?
Меняет ли удаление дубликатов порядок моих строк?
Можно ли удалить дубликаты и сортировать одновременно?
Что происходит с пустыми строками?
Есть ли ограничение на размер списка?
Как это сравнить с командной строкой (sort -u, awk, uniq)?
Насколько это быстрее удаления дубликатов в Excel или Notepad++?
Можно ли использовать это для поиска уникальных значений в колонке?
Похожие инструменты
Все инструменты →Конвертер регистра — UPPER, lower, camelCase и snake_case
Работа с текстом
Конвертируйте текст между UPPERCASE, lowercase, Title Case, Sentence case, camelCase, PascalCase, snake_case, kebab-case, CONSTANT_CASE и ещё 6 форматами мгновенно. Бесплатно, только в браузере, без регистрации.
Генератор Lorem Ipsum — текст-рыба онлайн
Работа с текстом
Создавайте текст-заполнитель Lorem Ipsum мгновенно — по абзацам, предложениям, словам, байтам или спискам. Копируйте или скачивайте как обычный текст, HTML, Markdown или JSON. 100% бесплатно, приватно, в браузере. Без регистрации.
Бесплатный тестер regex — отладка совпадений онлайн
Работа с текстом
Тестируйте регулярные выражения мгновенно на любом тексте. Подсветка совпадений, группы захвата, предпросмотр замены, разбиение и пояснение. Regex в стиле JavaScript, бесплатно, конфиденциально, без регистрации.
Генератор URL-слагов — slugify любого текста
Работа с текстом
Превращайте любой заголовок в чистый SEO-дружественный URL-слаг мгновенно. Транслитерация акцентов и кириллицы или сохранение Unicode-букв. 100% приватно, прямо в браузере.
Сортировка строк текста по алфавиту и естественно
Работа с текстом
Сортируйте строки текста по алфавиту, по числам (естественный порядок) или по длине, по возрастанию или убыванию. Бесплатный онлайн-сортировщик строк, 100% в браузере. Также удаление повторов и очистка списков. Без регистрации.
Сравнение текста и Diff
Работа с текстом
Сравните два текста мгновенно в браузере. Просмотр бок о бок, подсветка слов, экспорт unified diff, опции игнорирования регистра/пробелов/пустых строк. 100 % в браузере — без загрузки.