Cómo eliminar líneas duplicadas (y tres casos límite)

Quitar duplicados de una lista parece trivial. Tres casos límite (la sensibilidad a mayúsculas, los espacios y la conservación del orden) son donde se rompen la mayoría de los flujos. El patrón completo, con las trampas explicadas.

En esta página

La operación básica

Eliminar líneas duplicadas: entra una lista y cada línea que apareció más de una vez sale una sola vez. Se conserva la primera aparición; las posteriores se descartan.

Para la mayoría de las listas, esto es lo que quieres y la herramienta lo hace sin más. Abre Eliminar Duplicados, pega, copia el resultado. Listo en cinco segundos.

La parte interesante es qué cuenta como «duplicado». Tres casos límite cubren la mayoría de las dudas que surgen:

Publicidad

Caso límite 1 — sensibilidad a mayúsculas

¿Apple y apple son la misma línea?

Para el texto legible (nombres, palabras, direcciones), casi siempre: sí. Trátalas como duplicados y deduplica a una. Para el texto tipo código (identificadores que distinguen mayúsculas, nombres de archivo en Linux, URLs con rutas que distinguen mayúsculas), no. Son distintas y las dos deben sobrevivir.

Por defecto: sin distinguir mayúsculas en la herramienta de TextKit, porque eso coincide con la necesidad más común. Desactívalo si necesitas una comparación que distinga mayúsculas.

Caso límite 2 — espacios

Tres líneas que parecen idénticas:

alice
alice
 alice

¿Son duplicados? Con comparación estricta, solo las dos primeras; la tercera tiene un espacio al inicio. Con el recorte activado, las tres pasan a ser alice y se deduplican a una.

La respuesta correcta depende de qué produjo el espacio al inicio:

  • Si es un artefacto del pegado (una columna de una hoja de cálculo, texto web copiado), recorta y trátalas como duplicado.
  • Si tiene significado (configuración indentada, código con formato), mantén la comparación estricta.

Para el trabajo típico de limpieza de listas, recorta antes de deduplicar. Activa «recortar espacios». Cuando el problema son los espacios dobles o sueltos dentro de las líneas en lugar de alrededor, limpia primero el texto con la herramienta Eliminar Espacios.

Caso límite 3 — conservación del orden

Tienes una lista. Quieres quitar los duplicados. También quieres las líneas restantes en el mismo orden que la entrada.

Esto necesita deduplicación estable. Se conserva la primera aparición de cada línea; el orden de esas primeras apariciones coincide con la entrada. La mayoría de las herramientas en el navegador lo hacen; sort -u en el shell no (ordena, lo que pierde el orden de entrada).

Para una deduplicación estable en el shell, usa awk '!seen[$0]++'. Es la línea canónica. Recorre la entrada, registra cada línea en un arreglo asociativo e imprime solo las primeras apariciones. El orden se conserva.

Las herramientas en el navegador lo hacen de forma automática. La herramienta Eliminar Duplicados de TextKit usa por defecto la deduplicación estable; tienes que optar por el orden.

Ejemplo resuelto — limpiar una lista de contactos

Tienes una columna de CSV con direcciones de correo con estos problemas:

alice@example.com
Alice@example.com
alice@example.com 
bob@example.com
ALICE@EXAMPLE.COM

La tubería de limpieza:

  1. Recortar espacios. Quita el espacio al final de la fila 3.
  2. Minúsculas. Normaliza las variaciones de mayúsculas.
  3. Deduplicar. Colapsa las cuatro filas alice@example.com en una.

La herramienta Eliminar Duplicados de TextKit tiene las tres como interruptores. Actívalos, pega, copia. La salida:

alice@example.com
bob@example.com

De cinco filas a dos. El patrón de limpieza estándar para cualquier lista de contactos, ID o identificadores.

Un pegado, sin duplicados. La herramienta Eliminar Duplicados se encarga del recorte, de ignorar mayúsculas y de la deduplicación estable. Solo local. Nada sale del navegador.

La herramienta correcta según el tamaño de la lista

Tamaño de la listaMejor herramienta
Hasta 1000 líneasNavegador (TextKit)
1000 - 100 000 líneasEl navegador sigue funcionando; Excel algo más lento; el shell más rápido que el navegador pasadas las ~50 000
100 000 - 10 M líneasShell sort -u o awk '!seen[$0]++'
Más de 10 M líneasTabla de base de datos con índice UNIQUE, o Spark/Pandas

Para el caso de flujo típico (limpiar un pegado, deduplicar una columna), el navegador es la herramienta más rápida de principio a fin, porque el viaje de ida y vuelta a Excel o al shell cuesta más tiempo que la deduplicación en sí.

La operación inversa — encontrar duplicados

A veces quieres ver los duplicados en lugar de quitarlos. Dos patrones:

  • «Muéstrame solo las líneas que aparecieron más de una vez». Shell: sort | uniq -d.
  • «Muéstrame el conteo de cada línea única». Shell: sort | uniq -c | sort -rn. Ordenado por frecuencia de mayor a menor.

Para los equivalentes en el navegador, la herramienta Buscar y Reemplazar con regex puede manejar el conteo de frecuencia con fragmentos de JavaScript, o el COUNTIF de Excel en una columna auxiliar.

El resumen en dos líneas

Para el 95 % del trabajo de deduplicación: abre la herramienta Eliminar Duplicados, pega, activa el recorte y el ignorar mayúsculas si hace falta, copia. Para listas muy grandes o tuberías: awk '!seen[$0]++' input.txt.

Para la referencia más amplia sobre las operaciones con listas, mira operaciones con listas: la guía completa. Para las operaciones relacionadas de ordenar y mezclar, mira cómo ordenar líneas alfabéticamente y cómo mezclar líneas (Fisher-Yates).

Preguntas frecuentes

¿La deduplicación cambia el orden de las líneas restantes?

Depende de la herramienta. La deduplicación estable (la predeterminada en Eliminar Duplicados de TextKit) conserva el orden de entrada de las líneas que sobreviven. La deduplicación inestable (a veces acoplada con un orden) los reordena. Elige la estable cuando el orden de entrada importa.

¿Cómo deduplico sin distinguir mayúsculas?

Activa «sin distinguir mayúsculas» en la herramienta de deduplicación. La herramienta Eliminar Duplicados de TextKit tiene esta opción. A mano, en el shell: sort -uf (ordenar más deduplicar, sin distinguir mayúsculas).

¿Puedo conservar los duplicados y solo ver qué líneas están repetidas?

Sí. Esa es la operación inversa. sort | uniq -d en el shell muestra solo las líneas duplicadas. Algunas herramientas en el navegador tienen un modo de «mostrar solo duplicados».

¿Cómo deduplico un CSV por una columna específica?

Las herramientas de deduplicación por línea tratan toda la línea como clave de comparación. Para deduplicar por columna, usa Excel (Datos → Quitar duplicados → elegir columna), Pandas (df.drop_duplicates(subset=['col'])) o awk en el shell.

¿Por qué mi herramienta de deduplicación devuelve más líneas de las esperadas?

Casi siempre por espacios invisibles. Espacios o tabuladores al final que hacen que líneas que parecen idénticas en realidad sean distintas. Recorta antes de deduplicar. La herramienta Eliminar Duplicados de TextKit tiene un interruptor de «recortar espacios» que lo arregla.

Publicidad

Seguir leyendo

Escrito por . Creamos las herramientas sobre las que escribimos. Prueba la herramienta Eliminar Duplicados que usamos en este artículo.