Ordenar Líneas
Ordena líneas alfabéticamente A-Z, Z-A, por longitud, orden numérico natural, por columna o aleatorio. Elimina líneas duplicadas, recorta. En el navegador.
Acerca de la Herramienta Ordenar Líneas
Ordenar Líneas es un sorter de líneas multi-estrategia con seis modos de ordenación y cuatro pasos opcionales de preprocesado. Los seis modos son: alfabético A-Z (usa String.prototype.localeCompare() para orden alfabético natural consciente de acentos — 'á' se ordena entre 'a' y 'b' en lugar de después de 'z'), alfabético inverso Z-A, longitud ascendente (ordena por conteo de caracteres vía String.length), longitud descendente, ordenamiento Natural (la opción Intl.Collator con numeric:true que ordena 'file2' antes que 'file10' en lugar de después, igualando la forma en que el Explorador de Windows y los gestores de archivos modernos ordenan), y mezcla Aleatoria (algoritmo Fisher-Yates usando Math.random() para una permutación sin sesgo). El preprocesado opcional se aplica antes de ordenar: Recortar Espacios elimina espacios al inicio/final de cada línea vía String.trim(), Eliminar Líneas Vacías descarta líneas en blanco o con solo espacios, Eliminar Duplicados conserva solo la primera aparición de cada línea única, y Distinguir Mayúsculas alterna si 'Manzana' y 'manzana' se consideran distintas (por defecto desactivado, así que la mayúscula se pliega). Flujos típicos: alfabetizar una lista no ordenada de nombres de clientes con manejo correcto de café y Müller, ordenar nombres de archivos de forma natural para que v1.10 venga después de v1.9 y no después de v1.1, aleatorizar una lista de preguntas trivia o canciones de playlist, construir pipelines dedup-y-orden para análisis de log, y orden por longitud para encontrar las entradas más largas/cortas en un dataset.
¿Qué es el orden Natural y por qué '10' viene después de '2' en alfabético pero antes en Natural?
El orden alfabético compara cadenas carácter por carácter: '1' (code point 49) < '2' (code point 50), así que '10' se trata como empezando por '1' y se ordena antes que '2'. El orden natural detecta subcadenas numéricas embebidas y las compara como números: en '10' ve diez, en '2' ve dos, y 2 < 10, así que '2' va primero. Esto es lo que los humanos esperan para nombres de archivo (file2.txt antes que file10.txt), cadenas de versión (v1.9 antes que v1.10) y direcciones (Apto 2 antes que Apto 10). Implementado vía Intl.Collator con {numeric: true, sensitivity: 'base'}, que es el estándar web moderno y maneja alfanumérico mixto correctamente.
¿Cómo funciona realmente la sensibilidad a mayúsculas — qué pasa con caracteres acentuados como 'café'?
Cuando Distinguir Mayúsculas está DESACTIVADO (por defecto), el sorter usa plegado de caso consciente del idioma vía localeCompare con sensitivity: 'base' — así que 'Manzana', 'MANZANA' y 'manzana' se ordenan como idénticas, y acentos como 'café' vs 'cafe' también se pliegan a la misma clave. Cuando Distinguir Mayúsculas está ACTIVADO, las mayúsculas (code points 65-90) se ordenan antes que las minúsculas (97-122), así que 'Zebra' viene antes que 'manzana'. Para español con tildes (á, é, í, ó, ú, ñ) el modo plegado de acentos trata todas como equivalentes para ordenar; el modo estricto de acentos (no expuesto en UI) las mantendría distintas. Para preservar orden tildado en español estrictamente, ordena externamente con locale='es'.
¿Cuál es la diferencia entre esta herramienta y `sort` de Unix?
Unix `sort` es el estándar CLI y admite más flags (--field-separator, --key, --month-of-year, --human-numeric), maneja archivos arbitrariamente grandes vía external merge sort, y es más rápido en entradas de varios gigabytes. Esta herramienta proporciona el 80% más común de casos de uso (alfabético, inverso, natural, longitud, aleatorio, dedupe) en una UI de navegador sin instalación. Para ordenaciones puntuales de una lista pegada de email o Excel, el navegador es más rápido (no necesita guardar archivo). Para un archivo de log de 10 GB, usa `sort` o `sort -V` (orden de versión, similar a natural). La versión navegador también es consciente del idioma de fábrica — `sort` por defecto es bytewise salvo que pongas LC_ALL=es_ES.UTF-8.
¿En qué orden aplica Recortar, Eliminar Vacíos, Eliminar Duplicados y el orden real?
El pipeline es: 1) Recortar Espacios, 2) Eliminar Líneas Vacías, 3) Eliminar Duplicados, 4) Ordenar. Este orden importa. Recortar primero significa que ' manzana' y 'manzana' se reconocen como iguales, así que dedupe puede emparejarlas. Eliminar vacías a continuación las mantiene fuera del resultado y del conteo de duplicados. Dedupe opera sobre la línea COMPLETA (no sobre la clave/columna), conservando la primera aparición de cada línea única. Ordenar va al final. Las cajas de estadísticas reflejan cada etapa: Líneas Totales = entrada cruda, Vacías Eliminadas = líneas en blanco descartadas, Duplicados Eliminados = líneas repetidas descartadas, Líneas Ordenadas = salida final. Array.sort es estable en los motores modernos (V8, SpiderMonkey, JavaScriptCore), así que cuando dos claves son iguales — común al ordenar por columna — las líneas conservan su orden relativo original, lo que importa cuando se debe preservar un orden secundario.

¿Cómo ordeno por una columna o campo específico en lugar de la línea completa?
Activa 'Ordenar por columna/campo', elige el delimitador (coma para CSV, tabulación para TSV, punto y coma, barra vertical, o espacios para líneas de log) y fija el número de campo (base 1). Es el equivalente en navegador de `sort -t, -k2` de Unix — ordena cada fila por el campo elegido manteniendo la línea original completa en la salida. Ejemplo: para 'Smith,John,42' con delimitador Coma y campo 2, las filas se ordenan por el nombre (John). Se combina con todos los modos: alfabético, inverso, natural (así valores de columna como v1.9 y v1.10 se ordenan numéricamente) y longitud. Las líneas más cortas que el campo pedido se tratan como clave vacía y van arriba (ascendente). Nota: Eliminar Duplicados sigue comparando la línea COMPLETA, no solo la clave, así que dos filas con el mismo campo 2 pero otras columnas distintas se conservan ambas.
¿Cuál es la diferencia entre inverso, numérico y natural — y puedo invertir líneas sin ordenar?
Inverso (Z → A) es el orden alfabético descendente. El orden solo-numérico no existe como modo aparte aquí — en su lugar, el orden Natural maneja números dentro de cadenas: números puros como '2', '10', '100' se ordenan 2 < 10 < 100 como esperas, y cadenas mixtas como 'item2' antes de 'item10' también funcionan, porque Natural compara las secuencias de dígitos embebidas como números vía Intl.Collator numeric:true. El alfabético simple (A → Z) compara códigos de carácter, así que '10' va antes de '2'. Para simplemente invertir el orden existente de las líneas sin alfabetizar (voltear de arriba a abajo), esta herramienta no expone un interruptor de inversión directa; usa Aleatorio para mezclar, o pega las líneas ya invertidas. Para datos verdaderamente numéricos, usa Natural.
¿Qué tan aleatorio es Mezcla Aleatoria — es criptográficamente seguro?
Usa el algoritmo de mezcla Fisher-Yates con Math.random() como fuente de aleatoriedad. Esto produce una permutación uniforme sin sesgo (cada una de las n! ordenaciones tiene igual probabilidad), lo cual es matemáticamente correcto para mezcla ordinaria. Sin embargo, Math.random() NO es criptográficamente seguro — es un generador pseudoaleatorio determinista que, en teoría, podría predecirse si se conociera su estado interno. Para mezclar playlists, entradas de concurso, trivia o juegos de fiesta, es perfectamente adecuado. Para casos sensibles a la seguridad (sorteos de lotería, selección de jurado), usa crypto.getRandomValues() en un script personalizado en su lugar.
¿Cómo maneja la herramienta entradas muy largas — escala a 1 millón de líneas?
Sí, con advertencias. Array.sort() de JavaScript es O(n log n) en promedio usando TimSort en Chrome/Edge/Firefox, así que 1 millón de líneas se ordena en aproximadamente 1-3 segundos en un portátil moderno. El textarea del navegador se convierte en el cuello de botella — pegar 50+ MB de texto puede atascar la UI. Para datasets por encima de 10 MB, prefiere Unix `sort -u archivo.txt > out.txt` que hace streaming desde disco y maneja archivos arbitrariamente grandes vía external merge sort. El contador 'Líneas Totales' muestra cuántas líneas tienes antes de ordenar, útil para verificar que pegar funcionó.
¿La ordenación se hace en el navegador y mi texto es privado?
Sí. Toda la ordenación corre en JavaScript vía Array.sort(), Intl.Collator y Fisher-Yates — sin fetch() al servidor, sin analítica con contenido, sin escritura en localStorage. Abre Network en DevTools y pulsa Ordenar para verificar cero peticiones salientes. Seguro para listas sensibles como listas de correo de clientes, plantillas de empleados, hostnames internos, salida de generador de contraseñas, o cualquier dato que no debas subir.
