Видалити дублікати рядків
Вставте список, і кожен рядок, що повторюється після першої появи, буде видалено, а решта рядків збереже початковий порядок. Під час порівняння можна ігнорувати регістр літер і випадкові пробіли, а вся обробка відбувається у вашому браузері.
Символів: 0 · слів: 0 · рядків: 0
Символів: 0 · слів: 0 · рядків: 0
Працює повністю у цій вкладці браузера. Ваш текст не завантажується й не зберігається.
Що це робить
Видалити повторні рядки залишає перше входження кожного рядка й прибирає наступні повтори, не змінюючи початкового порядку. Порівняння може ігнорувати регістр і пробіли по краях, а порожні рядки можна залишити або видалити.
червоний синій Червоний зелений
червоний синій зелений
Хто чистить списки від дублікатів і навіщо
Дублікати рядків з’являються щоразу, коли списки об’єднують. Маркетолог зводить два експортовані списки адрес, дослідник збирає ключові слова з кількох сервісів, розробник збирає URL із лог-файлів, учитель вставляє прізвища з трьох форм реєстрації: у кожного в результаті є записи, що повторюються двічі або частіше. Дублікати можна прибрати й у таблицях, але для цього треба відкрити файл, виділити стовпець і знайти потрібний пункт меню; вставити текст у поле швидше, коли дані вже в буфері обміну.
Збереження початкового порядку важливіше, ніж здається. Список кроків, рейтинг або URL у порядку обходу втрачають сенс після сортування. Тут перше входження лишається точно на своєму місці, а наступні повтори просто відкидаються, і лічильник показує, скільки рядків видалено, тож ви можете оцінити, чи результат правдоподібний.
Як працює порівняння і непомітні відмінності
Кожен рядок зводиться до ключа порівняння й під час читання зверху вниз зберігається в множині; рядок, ключ якого вже є в множині, вважається дублікатом. Для цього потрібен один прохід, тому списки зі сотнями тисяч рядків обробляються швидко. Це також відрізняється від класичної команди Unix uniq, яка видаляє лише дублікати в сусідніх рядках, тому її зазвичай запускають після sort, втрачаючи початковий порядок. Ідіома awk awk '!seen[$0]++' робить те саме, що й цей інструмент.
Два рядки можуть виглядати однаково, але відрізнятися. Пробіл наприкінці, табуляція замість пробілу або нерозривний пробіл, скопійований з вебсторінки, змушують комп’ютер вважати їх різними рядками. Увімкніть обрізання, щоб ігнорувати пробіли на обох кінцях кожного рядка, зокрема нерозривні. Вимкніть урахування регістру, щоб вважати «Париж» і «париж» одним записом; зберігається той варіант написання, що трапився першим. Порожні рядки можна залишити, щоб абзаци лишалися розділеними, або видалити повністю.
Після очищення
Після видалення дублікатів списку часто потрібен певний порядок: Сортування рядків може впорядкувати його за алфавітом, у природному порядку або за довжиною. Якщо список узято з PDF або листа з порушеними рядками, спершу виправте їх іншими текстовими інструментами, адже запис, розірваний на два рядки, не збігатиметься зі своїм цілим дублікатом.
Поширені запитання
- Яка копія рядка-дубліката залишається?
- Перший. Кожен наступний рядок із тим самим вмістом видаляється, а решта рядків лишається в початковому порядку, тож нічого не перемішується.
- Чому два рядки, що виглядають однаково, не видаляються?
- Вони відрізняються невидимо, найчастіше пробілом наприкінці, табуляцією або нерозривним пробілом. Увімкніть обрізання пробілів або ігнорування регістру, якщо різниця лише у великих літерах.
- Чим це відрізняється від команди uniq?
- uniq видаляє рядок, лише якщо він повторює рядок безпосередньо над ним, тому його зазвичай поєднують із sort. Цей інструмент знаходить повтори в будь-якому місці тексту й зберігає початковий порядок.
- Чи можна видалити дублікати й водночас відсортувати список?
- Видаліть дублікати тут, а потім вставте результат у «Сортування рядків». Два кроки дають змогу зберегти порядок першої появи, коли він потрібен, і сортувати лише тоді, коли ви цього хочете.