Удаление дублирующихся строк — Мгновенная очистка текстовых списков
Вставьте любой список строк, и инструмент удалит все дубликаты, оставив только уникальные записи. Параметры позволяют управлять чувствительностью к регистру, обрезать начальные и конечные пробелы перед сравнением, а также выбирать, сохранять первое или последнее вхождение каждой группы дубликатов.
Вставьте текст выше, чтобы удалить дублирующиеся строки.
Как это работает
Когда дублирующиеся строки действительно имеют значение
Дублирующиеся строки безобидны в поэзии, но создают реальные проблемы в структурированных данных. В CSV-файле дублирующаяся строка незаметно раздувает количество записей, искажает агрегаты и может приводить к нарушениям первичного ключа при импорте в базу данных. В серверных лог-файлах повторяющиеся идентичные записи от сбойного процесса могут заполнить диск за считанные минуты. В конфигурационных файлах дублирующиеся ключи тихо перезаписываются — или, что хуже, вызывают ошибки парсинга — в зависимости от парсера.
Репозитории кода тоже страдают от случайного дублирования строк: ошибки копирования-вставки в списках зависимостей (requirements.txt, package.json), повторяющиеся операторы import или дублирующиеся записи в .gitignore. Автоматизированные CI-проверки часто их находят, но быстрая вставка и дедупликация перед коммитом быстрее, чем отладка неудачного пайплайна.
Пустые строки заслуживают особого внимания. Две последовательные пустые строки технически являются дубликатами, но многие текстовые форматы (Markdown, исходный код Python, тела электронных писем) используют двойные пустые строки как намеренные разделители. Опция «обрезать пробелы» нормализует строки, выглядящие пустыми из-за случайных пробелов, не удаляя намеренные пустые строки — результат зависит от вашего конкретного содержимого, поэтому проверьте вывод.
Чувствительность к регистру: когда важна, а когда нет
По умолчанию инструмент сравнивает строки без учёта регистра, поэтому «Apple», «apple» и «APPLE» считаются одной строкой и сохраняется только первая. Это правильная настройка для читаемых человеком списков, таких как теги, ключевые слова, названия городов и адреса электронной почты, где нужно объединить варианты одного и того же.
Режим с учётом регистра необходим для кода. В Python import 'os' и 'OS' технически различны (хотя 'OS' вызовет ошибку во время выполнения на большинстве систем), а имена переменных 'Result' и 'result' — разные идентификаторы. Ключевые слова SQL по соглашению нечувствительны к регистру, но имена таблиц чувствительны к регистру в файловых системах Linux. При дедупликации фрагментов кода, ключей конфигурации или путей всегда включайте режим с учётом регистра.
Практичный компромисс — запустить инструмент дважды: один раз без учёта регистра, чтобы выявить почти-дубликаты для проверки, и один раз с учётом регистра для окончательной дедупликации. Такой двухпроходный подход выявляет опечатки и несогласованную капитализацию, которую автоматическая дедупликация в одиночку упустила бы.
Как работает обработка пустых строк и пробелов
Конечные пробелы невидимы в большинстве текстовых редакторов и при операциях копирования-вставки, но заставляют строки сравниваться как неравные. «apple » (два конечных пробела) и «apple» — разные строки, поэтому без включённой обрезки вы сохраните обе — оставив незаметный дубликат в выводе. Опция «Обрезать пробелы» убирает начальные и конечные пробелы из каждой строки перед сравнением, не изменяя содержимое выходных строк (обрезанный текст записывается в результат).
Ведущие пробелы в коде с отступами или иерархических списках важны: обрезка уничтожит иерархию отступов. Для кода или структурированных схем отключите обрезку и используйте режим с учётом регистра, чтобы сохранить точное содержимое строк. Для плоских текстовых списков, таких как ключевые слова, названия городов или URL-пути, обрезка почти всегда является правильным выбором.
Переключатель «сохранять первое vs сохранять последнее» наиболее важен, когда ваш список содержит метаданные, привязанные к позициям. Например, журнал событий, где более поздние записи представляют более актуальные состояния — в этом сценарии сохранение последнего вхождения (самая новая запись для каждого ключа) семантически верно, тогда как сохранение первого сохранит устаревшие данные.
Частые вопросы
›Инструмент сохраняет порядок строк?
Да. Строки не сортируются — удаляются только дубликаты. Относительный порядок оставшихся строк идентичен порядку ввода.
›Что считается дубликатом?
Две строки являются дубликатами, если они идентичны после применения выбранных параметров (нормализация регистра и/или обрезка пробелов). Сравнивается только текстовое содержимое; номера строк и позиции не учитываются.
›Будут ли удалены пустые строки?
Пустые строки удаляются только в случае, если они являются дубликатами друг друга. Если в вашем тексте есть три последовательные пустые строки и включено «Сохранять первое», выживает только первая пустая строка. Чтобы удалить все пустые строки, используйте сортировщик текста с опцией «удалить пустые строки».
›Что делает «Сохранять последнее вхождение»?
Когда «Сохранять первое» снято, инструмент сохраняет последнее вхождение каждой группы дубликатов вместо первого. Результат по-прежнему отображается в исходном порядке документа — меняется только выживший экземпляр.
›Можно ли использовать это для дедупликации списков электронной почты?
Да. Вставьте по одному адресу электронной почты в строке. Используйте режим без учёта регистра (по умолчанию), так как адреса электронной почты нечувствительны к регистру по спецификации. Обрезка пробелов также рекомендуется для скопированных данных электронной почты.
›Есть ли ограничение на количество строк?
Ограничений не установлено. Инструмент обрабатывает всё в памяти вашего браузера. На практике современные браузеры обрабатывают сотни тысяч строк без заметных задержек.
›Мои данные покидают браузер?
Нет. Вся обработка происходит полностью в JavaScript на вашем устройстве. Ничего не загружается на сервер.
›Как дедуплицировать CSV по определённому столбцу?
Этот инструмент работает с целыми строками. Чтобы дедуплицировать по одному столбцу, сначала отсортируйте или извлеките этот столбец в одностолбцовый список, дедуплицируйте, затем снова объедините. Для больших наборов данных специализированный инструмент, например pandas Python или функция UNIQUE в таблице, будет точнее.
Похожие инструменты
Обновлено: