ToolActToolAct

Herramienta de deduplicación de texto

Elimina rápidamente contenido duplicado del texto, admite deduplicación por línea, palabra y oración

Texto de entrada
Resultado deduplicado

Modo de deduplicación

Opciones

Estadísticas

Elementos originales0
Elementos únicos0
Elementos duplicados0

¿Qué es la deduplicación de texto?

Text Deduplicate elimina líneas, palabras o entradas repetidas de un texto para que las listas queden más limpias y fáciles de revisar. Es útil con fragmentos CSV importados, listas de keywords, correos, logs, códigos de producto, variantes de prompts y notas donde los duplicados aparecieron por copiar, fusionar o exportar mal. Lo importante son las reglas de comparación: mayúsculas, espacios iniciales o finales, líneas vacías, puntuación, normalización y orden original pueden decidir si dos entradas son iguales. La herramienta acelera la limpieza, pero no sustituye revisión de dominio cuando entradas parecidas deben seguir separadas o pequeñas diferencias tienen significado.

Cómo usar

Operaciones básicas

  1. Introduce o pega el texto a deduplicar en el cuadro de texto izquierdo
  2. Selecciona el modo de deduplicación adecuado (por línea, palabra, oración, etc.)
  3. Ajusta las opciones según sea necesario (distinguir mayúsculas, mantener orden, etc.)
  4. Consulta los resultados de deduplicación y las estadísticas en tiempo real a la derecha
  5. Haz clic en el botón de copiar para guardar los resultados en el portapapeles

Descripción de modos

  • Por línea: trata cada línea como una unidad independiente y elimina las líneas idénticas
  • Por palabra: divide el texto por espacios y elimina las palabras duplicadas
  • Por oración: divide por puntos, signos de interrogación y exclamación, y elimina las oraciones duplicadas
  • Por párrafo: divide por líneas en blanco y elimina los párrafos duplicados
  • Por carácter: elimina los caracteres que aparecen varias veces en el texto

Casos de uso

Eliminar líneas, palabras, oraciones, párrafos o caracteres repetidosElige la unidad a deduplicar y la herramienta conserva la primera aparición manteniendo el orden de los elementos únicos. Cada modo usa una estrategia de división y unión apropiada, de modo que los flujos de trabajo por línea, párrafo, palabra y carácter se comportan de forma diferente. La búsqueda por conjunto hash se ejecuta en tiempo O(n) por pasada, por lo que incluso listas largas se deduplican en una sola ronda del navegador.
Auditar duplicados antes de copiar el texto limpioLas estadísticas muestran el conteo original, el conteo de elementos únicos y el conteo de duplicados eliminados. La visualización opcional de duplicados lista los elementos repetidos encontrados, lo que resulta útil antes de limpiar listas de correo, listas de palabras clave, logs o exportaciones de encuestas. Revisar primero la lista de duplicados permite confirmar que se fusionaron las entradas correctas antes de compartir la salida limpia.
Controlar la distinción entre mayúsculas y minúsculasActiva la distinción de mayúsculas cuando Apple y apple deben permanecer separados, o déjala desactivada cuando el texto repetido debe detectarse independientemente de las mayúsculas. Esto hace que la misma herramienta sea útil tanto para la limpieza de prosa como para listas técnicas exactas. El modo sin distinción normaliza la entrada convirtiendo a minúsculas antes de calcular el hash, de modo que un log largo no conserva 'ERROR' y 'error' como entradas separadas.
Limpiar listas de correo o etiquetas manteniendo el ordenPega una exportación de correos y cambia al modo por línea con coincidencia sin distinción de mayúsculas para fusionar [email protected] y [email protected]. Se conserva el orden de la primera aparición para que la lista limpia respete la agrupación original en la importación CSV. La estabilidad del orden importa aquí: la salida debe preservar la secuencia de entrada y no reordenarse alfabéticamente.
Normalizar espacios en blanco antes de deduplicar conjuntos de palabras claveRecorta espacios iniciales y finales y omite líneas vacías para que las tabulaciones sueltas de un copiar-pegar no creen duplicados fantasma. Esto es esencial cuando la lista de origen proviene de una exportación de hoja de cálculo donde las filas vacías y las entradas con sangría inflan el conteo de duplicados. Una segunda pasada sobre la lista limpia con reglas más estrictas suele encontrar cero colisiones adicionales, lo que es una buena señal de que la normalización funcionó.

Principio técnico

La deduplicación es un recorrido en una sola pasada respaldado por un Set de JavaScript. El Set de ECMAScript usa el algoritmo de igualdad SameValueZero (la misma comparación que usa Array.prototype.includes, donde NaN es igual a NaN pero +0 es igual a -0) y la especificación exige que proporcione búsqueda promedio sublineal — V8 lo implementa como una tabla hash de direccionamiento abierto con inserción amortizada O(1), por lo que toda la pasada es O(n) en función del número de elementos. La alternativa ingenua — insertar en un array resultado y llamar a indexOf en cada elemento — es O(n²) y se vuelve problemática alrededor de 10k entradas. La división depende del modo: el modo línea divide con /\r?\n/ para absorber tanto los finales de línea CRLF (Windows) como LF (Unix), el modo palabra divide con /\s+/, el modo oración divide con /(?<=[.!?])\s+/, y el modo párrafo divide con /\n{2,}/. Cada unidad pasa por normalizadores opcionales antes de convertirse en clave del Set: trim() para eliminar espacios iniciales y finales, toLowerCase() para la comparación sin distinción de mayúsculas, y String.prototype.normalize('NFC') para que las cadenas visualmente idénticas escritas en forma compuesta (é, U+00E9) vs descompuesta (e + U+0301) colapsen en una sola entrada. El orden se conserva porque el array resultado se construye en orden de iteración — el Set se consulta solo como filtro de '¿ya lo he visto?'. La misma elección de estructura de datos subyace a SQL DISTINCT y Python set(); la única alternativa real para decenas de millones de elementos es un filtro probabilístico de Bloom, que intercambia una pequeña tasa de falsos positivos (≈1% a 10 bits/elemento) por memoria constante y es excesivo para una herramienta de texto en el navegador.

  • La búsqueda en Set usa el algoritmo SameValueZero (ECMA-262 §7.2.10) — NaN coincide con NaN, +0 coincide con -0, en otro caso igualdad estricta
  • V8 implementa Set como tabla hash; insert y has son O(1) amortizados, haciendo toda la deduplicación O(n) frente a O(n²) basado en indexOf
  • El regex de modo línea /\r?\n/ maneja CRLF, LF y CR final en una sola división; ignorar esto deja sufijos '\r' invisibles que impiden la coincidencia exacta
  • La normalización Unicode mediante String.prototype.normalize('NFC') colapsa las formas compuestas/descompuestas (p. ej. 'é' U+00E9 vs 'e' + U+0301) en una sola clave
  • El modo sin distinción de mayúsculas convierte la clave a minúsculas — el valor en mayúsculas originales se conserva en la salida, de modo que el primer 'ERROR' se mantiene tal cual mientras las líneas 'error' posteriores se descartan
  • La conservación del orden es gratuita: el array resultado se construye en orden de entrada y el Set se consulta solo como filtro, por lo que se comporta como SQL DISTINCT con ordenación estable
  • Para más de 10 millones de elementos donde la memoria es el cuello de botella, un filtro de Bloom (≈10 bits/elemento para 1% de falsos positivos) reemplaza al Set — no es necesario en el navegador, donde un Set de 1 millón de cadenas cabe cómodamente en menos de 100 MB

Ejemplos

Deduplicación de líneas, conservando la primera aparición

Entrada:
apple
banana
apple
orange
banana

Salida:
apple
banana
orange

Deduplicación de líneas con espacios recortados

Entrada:
hello
  hello
hello 
world

Salida (después de recortar):
hello
world

Deduplicación sin distinguir mayúsculas y minúsculas

Entrada:
ERROR
error
Warning
WARNING
warning

Salida (sin distinguir mayúsculas):
ERROR
Warning

Extracción de lista única de correos

Entrada:
alice@example.com
bob@example.com
ALICE@example.com
carol@example.com
bob@example.com

Salida (sin distinguir mayúsculas, modo línea):
alice@example.com
bob@example.com
carol@example.com

Deduplicación de palabras

Entrada: hello world hello again world

Salida: hello world again

Deduplicación de oraciones

Entrada: This is a test. This is a test. Another sentence.

Salida: This is a test. Another sentence.

Preguntas frecuentes

¿Qué se considera un duplicado?

Cada unidad (línea, palabra, frase, párrafo o carácter) se compara con las demás. Las unidades idénticas son duplicados. Puedes activar o desactivar la sensibilidad a mayúsculas. La página devuelve la lista deduplicada e indica cuántos duplicados se han eliminado.

¿Conserva el orden?

Sí: la primera aparición de cada elemento único se mantiene en su posición original y los duplicados posteriores se descartan. La salida conserva el orden original.

¿Las líneas en blanco se tratan como duplicados?

Las líneas en blanco se comparan como cualquier otra línea. La primera línea en blanco se conserva; las líneas en blanco idénticas posteriores se descartan junto con el resto de duplicados.

¿Puede deduplicar por una subcadena o columna?

No. La deduplicación funciona sobre el contenido completo de cada unidad (línea, palabra, frase, párrafo o carácter). No hay un modo basado en columnas o subcadenas.

¿Ordenará la salida?

No. La salida siempre conserva el orden original. No hay opción de ordenar.

¿Qué tamaño de archivo aguanta?

El límite es la memoria del navegador. Cientos de miles de líneas funcionan bien en navegadores de escritorio. Archivos de varios millones de líneas se quedan sin memoria; para esos casos usa una herramienta de CLI como `sort -u` o `awk '!seen[$0]++'`.

¿Se sube mi texto?

No. La deduplicación usa un Set en memoria dentro de tu navegador. Las líneas pegadas no se transmiten.