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.
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:
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:
- Recortar espacios. Quita el espacio al final de la fila 3.
- Minúsculas. Normaliza las variaciones de mayúsculas.
- Deduplicar. Colapsa las cuatro filas
alice@example.comen 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.
La herramienta correcta según el tamaño de la lista
| Tamaño de la lista | Mejor herramienta |
|---|---|
| Hasta 1000 líneas | Navegador (TextKit) |
| 1000 - 100 000 líneas | El 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íneas | Shell sort -u o awk '!seen[$0]++' |
| Más de 10 M líneas | Tabla 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.
Seguir leyendo
Escrito por SAVI. Creamos las herramientas sobre las que escribimos. Prueba la herramienta Eliminar Duplicados que usamos en este artículo.