La eliminación de líneas duplicadas es el proceso de recorrer un bloque de texto línea por línea y conservar solo la primera aparición de cada línea única. Cuando eliminas líneas duplicadas online, la herramienta divide tu entrada por los caracteres de nueva línea, registra qué líneas ya han aparecido usando una estructura de datos basada en hash (como un Set) y genera solo las líneas que no habían aparecido antes. El orden original de las líneas se conserva.
Dos líneas se consideran duplicadas cuando coinciden exactamente, carácter a carácter. Sin embargo, los datos del mundo real rara vez cooperan con la coincidencia exacta. Los espacios al inicio o al final, las mayúsculas inconsistentes y los caracteres invisibles como tabulaciones o retornos de carro pueden hacer que líneas aparentemente idénticas se traten como únicas. Por eso la mayoría de las herramientas de deduplicación ofrecen opciones de comparación sin distinción de mayúsculas y recorte de espacios antes de comparar.
La deduplicación es una operación distinta de la ordenación. El comando Unix sort -u ordena y deduplica a la vez, lo que cambia el orden de las líneas. Si necesitas preservar el orden original, debes usar un enfoque de seen-set: iterar por las líneas en orden, añadir la forma normalizada de cada línea a un conjunto y omitir cualquier línea cuya clave ya exista. Esta herramienta usa el método seen-set, por lo que las primeras apariciones conservan su posición original.
¿Por qué usar este eliminador de duplicados?
Pega tu texto, elige las opciones de comparación y obtén el resultado deduplicado al instante. Sin configuración en la línea de comandos, sin expresiones regulares, sin subida de archivos.
⚡
Deduplicación instantánea
Los resultados se actualizan mientras escribes o pegas. Activa o desactiva la distinción de mayúsculas y el recorte de espacios para ver cómo afectan al resultado sin necesidad de volver a ejecutar nada.
🔒
Procesamiento privado
Toda la deduplicación se ejecuta en tu navegador con JavaScript. Tu texto permanece en tu dispositivo y nunca se envía a un servidor ni se registra en ningún lugar.
🎯
Comparación configurable
Activa el modo sin distinción de mayúsculas para tratar "Manzana" y "manzana" como la misma línea. Activa el recorte de espacios para ignorar los espacios y tabulaciones al inicio y al final durante la comparación.
📋
Sin cuenta necesaria
Abre la página y empieza a deduplicar. Sin registro, sin extensión de navegador, sin instalación en escritorio. Funciona en cualquier dispositivo con un navegador moderno.
Casos de uso del eliminador de duplicados
Desarrollo frontend
Limpia listas de clases CSS, elimina sentencias de importación repetidas o deduplica claves de traducción i18n. Eliminar duplicados antes de hacer commit evita bundles inflados y reduce los conflictos de fusión.
Ingeniería backend
Deduplica entradas en requirements.txt, Gemfile o listas de dependencias de package.json tras fusionar ramas. Elimina entradas repetidas de listas de permisos, listas de bloqueo o tablas de enrutamiento.
DevOps e infraestructura
Limpia entradas duplicadas en archivos .env, listas de hosts o ConfigMaps de Kubernetes. Las variables de entorno duplicadas causan sobreescrituras silenciosas, por lo que detectarlas antes del despliegue evita errores de configuración difíciles de rastrear.
QA y automatización de pruebas
Elimina IDs de casos de prueba repetidos en manifiestos de ejecución o aserciones duplicadas en suites de pruebas generadas. Deduplica los mensajes de error de la salida de logs para ver el conjunto único de fallos.
Ingeniería de datos
Elimina filas duplicadas de exportaciones CSV o resultados de consultas SQL pegados como texto. Limpia listas de correos electrónicos, IDs de usuario o etiquetas antes de importarlas en una base de datos o pipeline.
Estudiantes y personas en formación
Elimina entradas repetidas de listas de vocabulario, referencias bibliográficas o apuntes. Pega contenido de múltiples fuentes y obtén una lista limpia y única sin necesidad de instalar una hoja de cálculo.
Métodos de deduplicación comparados
Existen varios enfoques para eliminar líneas duplicadas, cada uno con diferentes compromisos en cuanto a preservación del orden, uso de memoria y precisión.
Método
Funcionamiento
Orden de salida
Uso habitual
Set
Hash-based, O(1) lookup
Unordered
JavaScript Set, Python set()
Sorted + scan
Sort then skip adjacent
Sorted output
Unix sort -u, C++ std::unique
Seen-set + list
Track seen, preserve order
Original order
This tool, Python dict.fromkeys()
Bloom filter
Probabilistic membership
May miss some
Large-scale pipelines, Redis
SQL DISTINCT
Database-level dedup
Query-dependent
SELECT DISTINCT col FROM table
Gestión de mayúsculas y espacios
Dos opciones controlan cómo esta herramienta decide si dos líneas son duplicadas. Entender cuándo usar cada opción evita tanto los falsos positivos (tratar líneas distintas como duplicadas) como los falsos negativos (no detectar líneas que deberían coincidir).
Distinguir mayúsculas (por defecto: activado)
Cuando está activado, "Manzana" y "manzana" se tratan como líneas distintas. Desactívalo al deduplicar datos enviados por usuarios, listas de dominios o cualquier texto donde las mayúsculas sean inconsistentes pero el significado sea el mismo.
Recortar espacios (por defecto: activado)
Cuando está activado, los espacios y tabulaciones al inicio y al final se eliminan antes de comparar. Esto detecta líneas que parecen idénticas pero difieren por caracteres invisibles, algo habitual en salidas de terminal copiadas, archivos de configuración con sangría y artefactos del editor.
Ejemplos de código
Cómo eliminar líneas duplicadas de forma programática en JavaScript, Python, Go y la línea de comandos. Cada ejemplo muestra deduplicación con preservación del orden y gestiona la distinción de mayúsculas.
JavaScript
const text = `apple
banana
apple
Cherry
banana
cherry`
// Remove exact duplicates, preserve order
const unique = [...new Map(
text.split('\n').map(line => [line, line])
).values()].join('\n')
// → "apple\nbanana\nCherry\ncherry"
// Case-insensitive deduplication
const seen = new Set()
const ciUnique = text.split('\n').filter(line => {
const key = line.toLowerCase()
if (seen.has(key)) return false
seen.add(key)
return true
}).join('\n')
// → "apple\nbanana\nCherry"
// Trim whitespace before comparing
const trimDedup = text.split('\n').filter(line => {
const key = line.trim().toLowerCase()
if (seen.has(key)) return false
seen.add(key)
return true
}).join('\n')
Python
text = """apple
banana
apple
Cherry
banana
cherry"""
lines = text.splitlines()
# Remove duplicates, preserve order (Python 3.7+)
unique = list(dict.fromkeys(lines))
# → ['apple', 'banana', 'Cherry', 'cherry']
# Case-insensitive deduplication
seen = set()
ci_unique = []
for line in lines:
key = line.lower()
if key not in seen:
seen.add(key)
ci_unique.append(line)
# → ['apple', 'banana', 'Cherry']
# With whitespace trimming
seen = set()
trimmed = []
for line in lines:
key = line.strip().lower()
if key not in seen:
seen.add(key)
trimmed.append(line)
Go
package main
import (
"fmt"
"strings"
)
func removeDuplicates(text string) string {
lines := strings.Split(text, "\n")
seen := make(map[string]bool)
result := make([]string, 0, len(lines))
for _, line := range lines {
if !seen[line] {
seen[line] = true
result = append(result, line)
}
}
return strings.Join(result, "\n")
}
func main() {
text := "apple\nbanana\napple\ncherry\nbanana"
fmt.Println(removeDuplicates(text))
// → apple\nbanana\ncherry
}
CLI (bash)
# Remove duplicates (sorts output — does not preserve order)
sort -u file.txt
# Remove duplicates while preserving original order
awk '!seen[$0]++' file.txt
# Case-insensitive dedup, preserve order
awk 'BEGIN{IGNORECASE=1} !seen[tolower($0)]++' file.txt
# Trim whitespace then dedup
sed 's/^[[:space:]]*//;s/[[:space:]]*$//' file.txt | awk '!seen[$0]++'
# Count duplicates before removing
sort file.txt | uniq -c | sort -rn
Preguntas frecuentes
¿Cuál es la diferencia entre eliminar duplicados y usar sort -u?
El comando sort -u primero ordena todas las líneas alfabéticamente y luego elimina los duplicados adyacentes. Esto cambia el orden original de las líneas. Un enfoque de seen-set, que es el que usa esta herramienta, itera por las líneas en orden y omite cualquier línea que ya haya aparecido, preservando la secuencia original. Usa sort -u cuando quieras una salida ordenada y única. Usa un seen-set cuando el orden importe.
¿Se envía mi texto a un servidor al eliminar duplicados?
No. Todo el procesamiento ocurre en tu navegador con JavaScript. El texto nunca sale de tu dispositivo. Puedes comprobarlo abriendo la pestaña Red de las DevTools del navegador y confirmando que no se realiza ninguna petición al pegar texto y cambiar opciones.
¿Cuántas líneas puede gestionar esta herramienta?
La herramienta funciona bien con decenas de miles de líneas. El Set de JavaScript tiene un tiempo de búsqueda promedio O(1), por lo que deduplicar 100.000 líneas tarda menos de 100 milisegundos en hardware moderno. Para archivos de varios megabytes, usa el one-liner awk '!seen[$0]++' en la línea de comandos, que recorre el archivo sin cargarlo entero en memoria.
¿Cómo funciona la deduplicación sin distinción de mayúsculas?
Cuando la distinción de mayúsculas está desactivada, cada línea se convierte a minúsculas antes de compararla con el conjunto de líneas ya vistas. La versión con las mayúsculas originales de la primera aparición se conserva en la salida. Así, si tu entrada tiene "Manzana" en la línea 1 y "manzana" en la línea 5, se conserva "Manzana" y se elimina "manzana".
¿Puedo eliminar duplicados y ordenar al mismo tiempo?
Esta herramienta elimina duplicados sin cambiar el orden de las líneas. Para obtener una salida ordenada y única, primero usa la herramienta Ordenador de Líneas de la misma categoría para ordenar tu texto, luego pega el resultado ordenado aquí para eliminar los duplicados restantes. Como alternativa, usa sort -u en la línea de comandos para una solución en un solo paso.
¿Qué ocurre con las líneas vacías y las líneas solo con espacios?
Las líneas vacías se tratan como cualquier otra línea. Si tu texto tiene tres líneas vacías, solo se conserva la primera. Cuando el recorte de espacios está activado, las líneas que contienen solo espacios o tabulaciones se normalizan a cadenas vacías antes de comparar, por lo que se tratan como duplicadas de la primera línea vacía o con solo espacios.
¿Cómo elimino duplicados de un archivo CSV por una columna específica?
Esta herramienta compara líneas completas, no columnas individuales. Para deduplicar un CSV por una columna específica, usa awk con un separador de campo: awk -F',' '!seen[$2]++' file.csv elimina las filas con valores duplicados en la segunda columna. En Python, usa pandas: df.drop_duplicates(subset=['nombre_columna']). Para datos SQL, usa SELECT DISTINCT o GROUP BY sobre la columna objetivo.