Eliminar líneas duplicadas: deduplicar texto online
Pega cualquier lista, quita los duplicados exactos, conserva el orden u ordena el resultado. Incluye opciones para mayúsculas y espacios.
Qué hace esta herramienta
Una utilidad gratuita en el navegador para eliminar líneas duplicadas de un bloque de texto. Pega tu entrada, elige si quieres conservar el orden original u ordenar la salida, y los duplicados desaparecen. Nada sale de tu máquina.
Es el equivalente gráfico de sort -u en la línea de comandos, o de awk '!seen[$0]++' cuando quieres conservar la primera aparición en el orden original. Si alguna vez has pegado una exportación de 4.000 correos en una terminal solo para ejecutar sort | uniq, esto es lo mismo sin la terminal.
La deduplicación es exacta y por línea. Dos líneas tienen que coincidir carácter por carácter (sujeto a tus opciones de mayúsculas y recorte) para contar como duplicadas. La coincidencia difusa, la detección de casi duplicados y la puntuación de similitud quedan deliberadamente fuera del alcance. Otro problema, otra herramienta.
Cómo funciona la deduplicación aquí
Internamente la herramienta recorre cada línea una vez y registra los valores vistos en un conjunto basado en hash, la misma estructura de datos que el Set de JavaScript o el set de Python. Las búsquedas son O(1) en promedio, así que un millón de líneas se procesan en menos de un segundo en un portátil normal. El algoritmo de fondo es la pertenencia a una hash table.
Dos modos. Conservar orden mantiene la primera aparición de cada línea y descarta cada duplicado posterior, igual que awk '!seen[$0]++'. Ordenar y deduplicar ordena toda la entrada alfabéticamente primero y emite cada línea única una vez, igual que sort -u. Elige la que espere tu consumidor.
Hay opciones para la propia comparación. No distinguir mayúsculas trata [email protected] y [email protected] como la misma línea. Recortar espacios elimina los espacios y tabulaciones al inicio y al final antes de comparar, así que " example", "example " y "example" se reducen a una sola entrada. Ambas están desactivadas por defecto porque lo seguro es coincidir exactamente con lo que se escribió.
Cómo eliminar líneas duplicadas en tres pasos
Un panel de entrada, un panel de salida. Nada se sube.
- 1
Pega tus líneas
Suelta el texto en el panel de entrada. Vale cualquier lista: correos, IPs, URLs, SKUs, marcas de tiempo de logs, nombres de paquetes, lo que sea uno por línea. Pulsa Sample para cargar un ejemplo con duplicados intencionales si quieres ver el resultado primero.
- 2
Elige tus opciones
Elige Conservar orden (mantiene la primera aparición, como awk '!seen[$0]++') u Ordenar y deduplicar (alfabético, como sort -u). Activa No distinguir mayúsculas si Alice y alice deben fusionarse, y Recortar espacios si los espacios al inicio o al final deben ignorarse.
- 3
Copia o descarga el resultado
El panel derecho muestra la salida deduplicada y un recuento de cuántas líneas se eliminaron. Pulsa Copy para copiarlo o Download para guardarlo como archivo .txt. Ambos paneles se desplazan de forma independiente, así que puedes ver qué líneas faltan.
Cuándo querrás esta herramienta
Limpiar una lista de correos de marketing antes de importar
Exporta tu lista de un CRM, añade otra de un registro de webinar, pega ambas en la herramienta y deduplica con No distinguir mayúsculas y Recortar espacios activos. Mailchimp y HubSpot rechazan direcciones duplicadas en la importación de todos modos, pero rechazan el lote entero en lugar de solo los duplicados, así que hacer esto antes te ahorra una resubida.
Deduplicar direcciones IP en un log de auditoría
Saca las IPs de origen de una semana de auth.log con awk, pégalas y deduplica en modo conservar orden. Obtienes una lista limpia de atacantes únicos sin perder la señal cronológica aproximada de "quién apareció primero". Mete eso en tu lista de bloqueo del firewall.
Limpiar una lista de URLs raspadas de varias páginas
Raspar un sitemap y un índice paginado devolverá la misma URL varias veces. Suelta la lista combinada, ordena y deduplica, y tienes una frontera de rastreo canónica. Las barras finales y las cadenas de consulta siguen contando como líneas distintas, así que normalízalas antes si quieres fusionarlas.
Reducir el ruido de pip freeze o npm ls a paquetes únicos
pip freeze en dos virtualenvs, o npm ls --all en un monorepo, imprime el mismo paquete en muchas líneas. Concatena, pega, deduplica y tienes una línea por nombre==versión para echar un vistazo rápido a lo que hay instalado.
Filas CSV pegadas desde varias fuentes
Funciona para deduplicación a nivel de línea, que es lo que sueles necesitar cuando cada fila es un registro autocontenido. Aviso: esto es deduplicación de texto plano, no consciente de columnas. Si quieres una deduplicación real a nivel de fila que respete las comas entre comillas e ignore el orden de columnas, usa una herramienta CSV de verdad. Para la mayoría de casos pegados desde una hoja de cálculo, la deduplicación por línea basta.
Limpiar una bibliografía o lista de citas copiada
Copiar referencias desde tres pestañas del navegador a un solo documento te deja con el mismo DOI repetido cuatro veces. Pega, activa Recortar espacios (porque el copiar y pegar desde PDFs adora añadir espacios sueltos), deduplica y tienes una sección de referencias limpia. El modo de orden viene bien aquí para listas de referencias alfabéticas.
Referencia rápida de deduplicación
Los casos extremos que muerden con más frecuencia al deduplicar texto. Vale la pena revisarlos una vez antes de fiarte de la salida.
| Topic | What this tool does |
|---|
| Conservación del orden | Conservar orden mantiene la primera aparición y descarta los duplicados posteriores. Como awk '!seen[$0]++' o list(dict.fromkeys(lines)) en Python. El modo ordenar es alfabético, como sort -u. |
|---|
| Sensibilidad a mayúsculas | Desactivada por defecto. Alice y alice son distintas a menos que No distinguir mayúsculas esté activo. Las listas de correos y nombres de usuario suelen quererla activa; las de SKUs no. |
|---|
| Recorte de espacios | Desactivado por defecto. " example", "example " y "example" son tres líneas distintas hasta que se activa Recortar espacios. Los espacios internos no se tocan nunca. |
|---|
| Líneas en blanco | Se tratan como un valor de línea normal: cadena vacía. Con la deduplicación activa, conservas una línea en blanco si había alguna en la entrada. Para quitar todas las líneas en blanco, usa un paso aparte de limpieza de espacios. |
|---|
| Finales de línea (CRLF vs LF) | Una línea que termina en \r\n es técnicamente distinta de una que termina en \n si el \r final sobrevive a la división. Dividimos por \r?\n, así que los finales mixtos se fusionan. Si ves duplicados fantasma, tu entrada tiene caracteres \r sueltos en mitad de línea. |
|---|
| Normalización Unicode | Dos cadenas visualmente idénticas pueden comparar como desiguales si una usa NFC y la otra NFD (acentos precompuestos vs descompuestos). Esta herramienta no normaliza. Si lo sospechas, normaliza ambas entradas a NFC primero con String.prototype.normalize('NFC') o unicodedata.normalize en Python. |
|---|
| Salto de línea final | Un archivo que termina en \n tiene una última línea vacía fantasma. La mayoría de editores la ocultan. La tratamos como una línea en blanco, deduplicada con cualquier otra línea en blanco. La salida conserva un único salto de línea final por convención. |
|---|
| Codificación | UTF-8 de principio a fin. El navegador se encarga de decodificar al pegar; si tus bytes eran originalmente Latin-1 o Windows-1252, los caracteres fuera de ASCII pueden estar mal antes de que la deduplicación se ejecute siquiera. Convierte la codificación aguas arriba. |
|---|
Eliminar líneas duplicadas: preguntas frecuentes
¿Conserva el orden original u ordena la salida?
Ambas, tú eliges. Conservar orden mantiene la primera aparición de cada línea y descarta cada duplicado posterior, así que la salida queda en el mismo orden que la entrada. Ordenar y deduplicar ordena todo el resultado alfabéticamente. Conservar orden es lo que quieres cuando el orden tiene significado (logs cronológicos, listas con ranking). Ordenar es lo que quieres cuando solo necesitas un conjunto único limpio.
¿La comparación distingue mayúsculas y minúsculas?
Por defecto sí, porque es la suposición segura. Alice y alice son líneas distintas a menos que actives No distinguir mayúsculas. La mayoría de sistemas de correo tratan las direcciones como insensibles a mayúsculas en la parte local, así que para listas de correo casi siempre quieres esta opción activa. Lo mismo para nombres de usuario en plataformas insensibles a mayúsculas. Para SKUs e identificadores genuinamente sensibles a mayúsculas, déjala desactivada.
¿Puede ignorar espacios al inicio y al final?
Sí, con Recortar espacios. Quita los espacios y tabulaciones al inicio y al final antes de comparar, así que " example ", "example " y "example" se reducen a una sola entrada. Útil cuando tu entrada se editó a mano o se copió y pegó desde un PDF, ya que ambos dejan espacios sueltos. El espacio interno dentro de una línea se respeta.
¿En qué se diferencia del comando uniq de Unix?
El comando uniq solo fusiona duplicados adyacentes, lo que sorprende a muchos. Dos líneas idénticas separadas por una línea distinta sobreviven ambas a uniq. Por eso el modismo Unix es sort | uniq o sort -u: hay que ordenar primero para que los duplicados queden contiguos. Esta herramienta no necesita una entrada ordenada, porque registra cada línea vista en un hash set sobre la marcha.
¿Cuenta cuántos duplicados tenía cada línea?
No, eso es otra función. Si necesitas conteos, el comando Unix es uniq -c tras un sort: sort input.txt | uniq -c | sort -rn da una tabla de frecuencias ordenada por conteo, que es lo que quieres para encontrar las entradas más comunes. Esta herramienta se centra en la limpieza, no en el análisis.
¿Qué tamaño de entrada puedo pegar?
Unos pocos millones de líneas no son problema. La deduplicación en sí es O(n) con búsquedas hash de tiempo constante, así que el cuello de botella es el navegador renderizando el panel de resultados, no la deduplicación. Para entradas muy grandes (50 MB o más), espera una pausa apreciable cuando el textarea se repinta. Si tu entrada es así de grande, casi seguro que ya tienes sort -u a mano; úsalo.
Privacidad y cómo funciona esto
Tu texto no sale nunca de tu navegador. La deduplicación se ejecuta en tu máquina, localmente, contra un Set de JavaScript. Ni analítica sobre tu entrada, ni logs, ni viaje a la nube. Toda la herramienta son unas pocas líneas de código: dividir por saltos de línea, recorrer, conservar lo que no hayamos visto. Las primitivas de la biblioteca estándar tras esto están documentadas en la referencia de Set en MDN y los docs de set en Python.