Ordenador de líneas
Ordena, invierte, elimina duplicados o baraja aleatoriamente líneas de texto.
Modo de orden
Acerca del ordenamiento de líneas
El ordenamiento de líneas organiza texto comparando cada línea según un orden elegido. El ordenamiento alfabético es útil para listas, glosarios y directorios. El ordenamiento numérico trata cada línea como un número y la clasifica por valor. El ordenamiento por longitud agrupa entradas cortas y largas, práctico para el formateo y el diseño.
Esta herramienta también permite eliminar las líneas duplicadas, retirar las líneas vacías, limpiar los espacios, invertir el orden o barajar aleatoriamente las líneas. Todo el procesamiento es instantáneo y se realiza en tu navegador.
Usos habituales
- Clasificar alfabéticamente una lista de nombres, artículos o entradas
- Ordenar valores de columnas CSV o entradas de logs
- Eliminar los duplicados de un archivo o un conjunto de datos
- Sortear una lista para rifas o asignación aleatoria en juegos
- Ordenar números de menor a mayor, o a la inversa
- Limpiar datos eliminando espacios y líneas vacías
Preguntas frecuentes
¿Cómo funciona el ordenamiento numérico?
El ordenamiento numérico extrae el número al inicio de cada línea y clasifica por ese valor. Las líneas que no empiezan por un número se colocan al final. Esto significa que «9 artículos» va antes que «10 artículos» (al contrario que en el ordenamiento alfabético, donde «10» precedería a «9»).
¿Qué hace «Eliminar los duplicados»?
Esta opción elimina las líneas que aparecen más de una vez, conservando solo la primera aparición. Combinada con «Insensible a mayúsculas», las líneas que solo difieren en la caja también se tratan como duplicadas.
¿El barajado es realmente aleatorio?
El barajado usa el algoritmo de Fisher-Yates con Math.random(). Es adecuado para uso cotidiano como aleatorizar listas o sortear nombres. No es criptográficamente seguro · para aleatoriedad con implicaciones de seguridad, usa una herramienta específica.
¿Qué es la ordenación de líneas?
La ordenación de líneas es la operación de reordenar las filas de un archivo de texto o lista según una regla elegida. La regla puede ser lexicográfica (comparar caracteres de izquierda a derecha por su punto de código Unicode), numérica (extraer un número inicial y comparar valores), basada en longitud (comparar conteos de caracteres) o aleatoria (un barajado Fisher-Yates que produce una permutación uniformemente aleatoria). Cada regla responde una pregunta diferente sobre sus datos.
Esta herramienta expone ocho modos de ordenación (A a Z, Z a A, numérico ascendente, numérico descendente, más corto primero, más largo primero, barajar, invertir) más cuatro opciones activables (insensible a mayúsculas, recortar espacios, eliminar duplicados, eliminar líneas vacías). Las combinaciones cubren los flujos de trabajo cotidianos de limpieza de listas que solían requerir una sola línea de Bash con sort, uniq, awk y una tubería de shell. Ahora pega las líneas, hace clic en un modo y unas cuantas casillas de verificación, y lee el resultado.
Todo el cálculo ocurre en su navegador usando Array.prototype.sort integrado de JavaScript, que utiliza TimSort (un híbrido de ordenación por mezcla y ordenación por inserción, estable y O(n log n) en el peor caso) en V8, JavaScriptCore y SpiderMonkey desde 2018. Para listas de menos de un millón de líneas, la operación se completa más rápido de lo que le toma soltar el botón del ratón.
Lo que hay dentro del ordenador
La interfaz apila tres controles: un área de texto de entrada donde pega sus líneas, una fila de ocho botones de modo que resaltan la selección activa, y una fila de cuatro casillas de verificación para las opciones de deduplicación y recorte. Debajo está el botón de acción Ordenar Líneas, que produce el área de texto de salida de solo lectura y actualiza el contador de líneas debajo.
Los contadores de líneas arriba y abajo de la entrada y salida le permiten verificar la operación de un vistazo: si comenzó con 1.234 líneas y marcó Eliminar Duplicados, el conteo de salida le dice inmediatamente cuántos duplicados se eliminaron. Este atajo es más rápido que escribir un script único de Python o AWK para la misma tarea.
Tres acciones envuelven la parte inferior: Copiar Resultado escribe la salida en su portapapeles a través de la API Clipboard, Descargar .txt guarda un archivo de texto UTF-8 con finales de línea LF, y Borrar vacía ambas áreas de texto. No se guarda historial, no persiste ninguna configuración, y refrescar la página devuelve la herramienta a su estado predeterminado A-a-Z.
Historia y contexto
Clasificadores de tarjetas perforadas Hollerith (1890)
El clasificador de tarjetas perforadas de Herman Hollerith, construido para el censo de EE.UU. de 1890, dejaba caer mecánicamente cada tarjeta en uno de 12 compartimentos según la posición de un agujero perforado. Los operadores pasaban las tarjetas por el clasificador varias veces, una vez por dígito, para producir una clasificación numérica completa. La técnica se llamaba clasificación por radix, y sustentó la computación empresarial durante los siguientes 60 años. IBM, fundada como Computing-Tabulating-Recording Company en 1911, surgió directamente de las máquinas de Hollerith.
John von Neumann describe la ordenación por mezcla (1945)
En un informe interno de 1945 sobre EDVAC, John von Neumann describió la ordenación por mezcla, el primer algoritmo escrito para una computadora con programa almacenado. La idea es recursiva: divida la lista en dos, ordene cada mitad y luego mezcle las dos mitades ordenadas tomando repetidamente el elemento frontal más pequeño. La ordenación por mezcla sigue siendo un ejemplo de libro de texto de divide-y-vencerás y es la base de TimSort, el algoritmo que V8 usa para Array.prototype.sort hoy.
Tony Hoare inventa el quicksort (1959)
Tony Hoare, entonces de 25 años visitando la Universidad Estatal de Moscú para aprender ruso, diseñó quicksort en 1959 mientras intentaba ordenar una lista de palabras rusas contra un diccionario inglés. El algoritmo elige un pivote, particiona la lista alrededor de él y recurre en cada lado. El caso promedio es O(n log n), el peor caso O(n al cuadrado), pero en la práctica supera a la ordenación por mezcla debido a la localidad de caché. Hoare ganó el Premio Turing en 1980.
J.W.J. Williams introduce el heapsort (1964)
J.W.J. Williams publicó heapsort en Communications of the ACM en 1964. El algoritmo construye un montículo binario (un árbol donde cada padre es al menos tan grande como sus hijos) y extrae repetidamente la raíz. Garantizado O(n log n) tanto en el caso promedio como en el peor, sin memoria extra, pero no amigable con el caché. Heapsort es el respaldo del peor caso dentro de std::sort de C++ (Introsort, 1997).
ASCII fija el orden de clasificación (1963 a 1967)
ASCII, ratificado en 1963 y revisado en 1967, asignó los códigos 48 a 57 a los dígitos 0 a 9 y 65 a 90 a las mayúsculas A a Z. La convención de que 0 clasifica antes que 9 clasifica antes que A clasifica antes que Z (y que las mayúsculas clasifican antes que las minúsculas) está incorporada en cada ordenación lexicográfica predeterminada que el mundo ha producido desde entonces. Es por eso que 'Apple' clasifica antes que 'apple' y por qué '10' clasifica antes que '9' cuando compara cadenas carácter por carácter.
Algoritmo de Colación Unicode (1996)
El Consorcio Unicode publicó el primer Algoritmo de Colación Unicode (UCA) en 1996, codificado como UTS #10. UCA asigna a cada punto de código un peso multinivel (primario, secundario, terciario) para que la clasificación pueda ser consciente del idioma: en alemán, ä puede clasificar con a o después de z según el contexto; en sueco, å clasifica después de z; en español, ñ clasifica después de n. Intl.Collator de JavaScript (2014) envuelve UCA y es lo que impulsa la clasificación correcta de listas según el idioma en la web.
Flujos de trabajo prácticos
Ordenar alfabéticamente una lista de nombres
Tiene una lista de clase, lista de asistentes o volcado de contactos pegado de una columna de hoja de cálculo. Pegue, marque Insensible a mayúsculas (para que 'alice' y 'Alice' se ordenen juntas), haga clic en A a Z. La salida está lista para copiar de vuelta a la hoja de cálculo o pegar en la línea BCC de un correo electrónico. Recortar Espacios captura los espacios sobrantes que provienen de artefactos de copiar y pegar.
Deduplicar entradas de registro
Exportó 5.000 mensajes de error de un registro de servidor y quiere conocer los distintos. Pegue, marque Eliminar duplicados, haga clic en A a Z. El conteo de salida le dice cuántos errores únicos existen. Combine con Recortar Espacios si las líneas de registro tienen sangría variable.
Sortear nombres para una lotería o rifa
Pegue los nombres de los concursantes, uno por línea. Haga clic en Barajar. La primera línea de la salida es su ganador, la segunda es el subcampeón, y así sucesivamente. La implementación Fisher-Yates usa Math.random, que es estadísticamente uniforme pero no criptográficamente seguro. Para sorteos de premios con implicaciones legales, ejecute el barajado en un servidor usando un CSPRNG.
Preparar una columna CSV
Cuando un archivo CSV tiene SKU de producto o ID de cliente sin ordenar en una columna, copie la columna en un editor de texto, pegue aquí, ordene numéricamente y pegue de vuelta. El modo numérico maneja correctamente SKU como '9', '10', '100' (el lexicográfico los ordenaría 10, 100, 9, lo cual rara vez es lo que quiere).
Comparar dos listas para elementos faltantes
Ordene ambas listas con las mismas opciones (A a Z, Insensible a mayúsculas, Recortar Espacios). Péguelas lado a lado en una herramienta de diff. Los elementos que aparecen en una lista pero no en la otra se vuelven obvios. Esto es más rápido que escanear manualmente listas sin ordenar y funciona incluso cuando ambas listas tienen miles de entradas.
Ordenar una pendientes o lista de tareas
Cuando escribe una lista de tareas en un editor de texto plano y la quiere de vuelta en orden de prioridad o alfabético, pegue en el ordenador. Use Más Largo Primero para sacar a la superficie las tareas de múltiples pasos en la parte superior, o Más Corto Primero para limpiar primero las victorias fáciles. Invertir Orden es útil cuando la lista original ya estaba ordenada pero en la dirección incorrecta.
Trampas comunes
Ordenación lexicográfica vs numérica
Las ordenaciones A-a-Z predeterminadas comparan cadenas carácter por carácter, así que '10' viene antes de '9' porque '1' viene antes de '9' en ASCII. Para datos numéricos, use el modo Numérico en su lugar. Para datos alfanuméricos mixtos como 'archivo2.txt' vs 'archivo10.txt' (ordenación natural), esta herramienta no admite directamente la ordenación natural. Puede falsificarla rellenando con ceros los números antes de ordenar.
La sensibilidad a mayúsculas está activada por defecto
Por defecto, la ordenación es sensible a mayúsculas: 'Apple' ordena antes que 'apple' porque A mayúscula (65) viene antes que a minúscula (97) en ASCII. Si quiere una ordenación insensible a mayúsculas (alfabética sin considerar la capitalización), marque la casilla Insensible a mayúsculas antes de hacer clic en Ordenar Líneas.
El espacio en blanco al final rompe la deduplicación
'apple' y 'apple ' (con espacio al final) son cadenas diferentes, así que la deduplicación mantiene ambas. Siempre marque Recortar Espacios junto con Eliminar Duplicados cuando trate con datos pegados, de lo contrario el conteo de deduplicación se inflará por lo que parecen ser líneas idénticas.
La ordenación consciente de la localización no es compatible
Esta herramienta utiliza el orden predeterminado de punto de código Unicode, que es correcto para inglés y muchos idiomas europeos pero no para alemán (ä, ö, ü), sueco (å, ä, ö), español (ñ) o cualquier escritura con reglas de colación. Para ordenación correcta según el idioma, use una hoja de cálculo o un lenguaje de programación con soporte Intl.Collator.
La ordenación estable está garantizada desde 2019
Array.prototype.sort se volvió estable en todos los principales navegadores a partir de Chrome 70 (2018) y Firefox 65 (2019). Antes de eso, los elementos iguales podían reordenarse de manera impredecible, lo que rompía cualquier flujo de trabajo que dependiera del orden de inserción. Esta herramienta se basa en la garantía estable moderna, así que las líneas iguales permanecen en su orden relativo original.
La normalización Unicode afecta la igualdad
El carácter é puede codificarse como un solo punto de código (U+00E9) o como e más acento agudo combinado (U+0065 U+0301). Se ven idénticos pero son secuencias de bytes diferentes, así que la deduplicación no los hará coincidir. Si sus datos mezclan ambas formas, normalice con NFC en un lenguaje de programación primero, o espere que los duplicados sobrevivan al paso de deduplicación.
Privacidad y manejo de datos
Cada línea que pega se ordena en su navegador mediante una pequeña función JavaScript. Ningún dato sale de su dispositivo. No registramos entradas, no almacenamos salidas, no ejecutamos análisis vinculados al contenido del texto, ni cargamos SDK de terceros que puedan leer las áreas de texto. Los botones Copiar Resultado y Descargar .txt interactúan con su sistema operativo a través de API estándar de gestos de usuario (API Clipboard y el truco <a download>) y no son visibles para partes externas.
Una vez cargada la página, la herramienta funciona sin conexión. Puede desconectarse de la red, abrir en una ventana privada, ejecutar dentro de una caja de arena corporativa o usar el modo avión en un vuelo, y la ordenación seguirá completándose. Esto hace que la herramienta sea segura para listas confidenciales de clientes, SKU internos y cualquier dato que nunca deba tocar un servidor de terceros.
Cuándo no usar un ordenador de líneas
Ordenar una columna de hoja de cálculo con celdas relacionadas
Si la columna A contiene nombres y la columna B contiene las direcciones de correo electrónico correspondientes, copiar solo la columna A aquí y ordenar desincronizará la relación de fila. Use la ordenación integrada de la hoja de cálculo que mueve filas enteras juntas. La ordenación de líneas es para texto independiente, sin relación de fila.
Conjuntos de datos muy grandes (millones de líneas)
La herramienta mantiene toda la entrada y salida en memoria y se ejecuta sincrónicamente, lo que puede congelar la pestaña del navegador en entradas de múltiples millones de líneas. Para conjuntos de datos de ese tamaño, use una ordenación de línea de comandos (sort de Unix, sort -u, sort -n) que maneja archivos arbitrariamente grandes a través de ordenación por mezcla externa.
Datos de streaming en tiempo real
Si llegan nuevas líneas cada segundo (como un feed de registro en vivo o un flujo websocket), esta herramienta no puede seguir el ritmo. Está diseñada para el procesamiento por lotes de texto estático. Para ordenación de streaming, use una base de datos con un índice ordenado, o un lenguaje de programación con una cola de prioridad.
Datos estructurados (JSON, CSV con comillas)
Los arreglos JSON, los archivos CSV con comas integradas dentro de campos entre comillas o los elementos XML no son seguros de ordenar como texto plano porque sus delimitadores abarcan múltiples líneas. Use un ordenador consciente de JSON, un analizador CSV o jq para la ordenación de datos estructurados.
Más preguntas
¿Qué algoritmo de ordenación usa la herramienta?
La herramienta usa Array.prototype.sort integrado del navegador, que es TimSort en V8 (Chrome, Edge, Node.js desde 2018) y una ordenación por mezcla personalizada en SpiderMonkey (Firefox). Ambos son estables, O(n log n) en el peor caso y optimizados para datos del mundo real parcialmente ordenados. Casi con certeza no puede superarlos con una implementación JavaScript personalizada.
¿Puedo ordenar por idioma (alemán, sueco, chino)?
No en esta herramienta. Usamos el orden predeterminado de punto de código Unicode. Para ordenación consciente del idioma (å sueca después de z, ß alemana como ss, ñ española después de n), use una hoja de cálculo con configuración regional, o Intl.Collator de JavaScript en un script personalizado. La herramienta está pensada para flujos de trabajo predeterminados en inglés.
¿Qué tan aleatoria es realmente la opción Barajar?
El barajado usa el algoritmo Fisher-Yates (Knuth 3.4.2) con Math.random como fuente de entropía. Math.random en navegadores modernos usa xorshift128+ (Chrome desde 2015), que es estadísticamente uniforme y pasa pruebas de aleatoriedad, pero no es criptográficamente seguro. Para sorteos de premios o cualquier cosa con peso legal, use crypto.getRandomValues o un CSPRNG del lado del servidor.
¿Hay un número máximo de líneas?
No hay límite estricto. La herramienta maneja cómodamente 100.000 líneas en una laptop de gama media. Con 1 millón de líneas, espere una pausa de uno a tres segundos mientras el navegador hace la ordenación. Por encima de eso, la propia área de texto se convierte en el cuello de botella, y la herramienta puede colgar brevemente la pestaña. Use una herramienta de línea de comandos para conjuntos de datos muy grandes.
¿Por qué mi ordenación numérica pone '1.5' entre '1' y '2'?
La ordenación numérica analiza el número inicial usando parseFloat, que reconoce puntos decimales (1.5), notación científica (1e3), negativos (-5) y unidades finales ignoradas después de los dígitos. Si el resultado no es un número, la línea va al final. Este comportamiento coincide con la mayoría de las expectativas del usuario pero puede sorprenderlo con listas mixtas de enteros y decimales.
¿La ordenación modificará mi entrada original?
No. El área de texto de entrada queda intacta. La salida ordenada aparece en un área de texto separada de solo lectura. Puede ordenar la misma entrada varias veces con diferentes modos u opciones sin perder el original. El botón Borrar es la única manera de eliminar la entrada, y no pide confirmación, así que úselo deliberadamente.