Как удалить дубликаты строк из списка и не потерять порядок
Списки email-адресов из рассылки, выгрузка ID из двух таблиц, склеенные списки задач — дубликаты в них появляются незаметно, а последствия бывают неприятными: дважды отправленное письмо или задвоенная запись в отчёте. Чистка списка занимает секунды, если знать три нюанса.
Нюанс первый: регистр
«Ivanov@mail.ru» и «ivanov@mail.ru» — это один и тот же адрес или два разных? Для email — один, для паролей и артикулов — совершенно точно разные. Поэтому у инструмента есть переключатель чувствительности к регистру: для почт и доменов выключайте его, для кодов и паролей — включайте.
Нюанс второй: невидимые пробелы
Пробел или табуляция в конце строки (после копирования из Excel такое сплошь и рядом) делает строку «другой», и дубликат переживает чистку. Правильный порядок действий: сначала обрезать пробелы по краям, потом удалять дубликаты. В инструменте удаления дубликатов есть отдельная галочка trim — она делает это автоматически перед сравнением.
Нюанс третий: порядок строк
Простое решение «прогнать через sort | uniq» в командной строке пересортирует весь список. Часто это ломает задачу: порядок рассылки, хронология лога, приоритеты задач. Поэтому в онлайн-инструменте по умолчанию порядок сохраняется — удаляется второе и последующие вхождения, а первое остаётся на своём месте.
После чистки полезно взглянуть на статистику: сколько строк было и сколько осталось. Разница — это и есть количество дублей; если оно подозрительно велико (скажем, половина списка), стоит поискать источник повторов, а не просто чистить следствие. Считать длину и состав списка удобно в счётчике слов, а найти пересечения двух списков — в сравнении двух списков.
Удаление дубликатов
Удалите повторяющиеся строки из текста с параметрами учёта регистра, обрезки пробелов и сохранения порядка
Сравнение двух списков / массивов
Сравните два списка и найдите уникальные и общие элементы
Счётчик слов
Подсчитайте слова, символы, предложения, абзацы и оцените время чтения мгновенно