Ordenador de Líneas
Ordena líneas alfabéticamente, por longitud, en orden inverso o de forma aleatoria
Líneas de entrada
Líneas ordenadas
¿Qué es la ordenación de líneas?
La ordenación de líneas es el proceso de reorganizar las líneas de un bloque de texto según una regla específica: orden alfabético, orden inverso, longitud de línea o una mezcla aleatoria. Ordenar líneas en línea es una tarea habitual al trabajar con archivos de registro, datos CSV, listas de configuración o cualquier contenido de texto plano donde el orden importa. La operación divide el texto por los caracteres de nueva línea, aplica una función de comparación al array resultante y une de nuevo las líneas ordenadas.
La mayoría de los lenguajes de programación ordenan cadenas usando comparación lexicográfica por defecto, que compara los caracteres por sus puntos de código Unicode. Esto significa que las letras mayúsculas se ordenan antes que las minúsculas («Banana» antes que «apple»), y los dígitos antes que las letras. La ordenación con reconocimiento de configuración regional, a veces llamada ordenación natural o cotejamiento, corrige esto aplicando reglas específicas del idioma. localeCompare() de JavaScript, locale.strxfrm() de Python y el comando POSIX sort con LC_COLLATE ofrecen ordenación con reconocimiento regional.
Ordenar por longitud es útil cuando necesitas encontrar las entradas más cortas o más largas de una lista, identificar valores atípicos en la salida de registros u organizar elementos por complejidad. La ordenación inversa voltea el orden existente de las líneas sin reordenarlas, lo cual es diferente a la ordenación alfabética de Z a A. La mezcla aleatoria asigna a cada línea una clave de ordenación aleatoria, produciendo un orden diferente en cada ejecución. Cambiar entre modos con la misma entrada es más rápido que escribir un script puntual.
¿Por qué usar este ordenador de líneas?
Pega tu texto, elige un modo de ordenación y obtén el resultado al instante. Sin configuración de línea de comandos, sin archivos de script, sin instalar paquetes.
Casos de uso del ordenador de líneas
Referencia de modos de ordenación de líneas
Esta herramienta soporta seis modos de ordenación. La tabla a continuación describe cada modo, el método de comparación que utiliza y un resultado de ejemplo para la lista de entrada: apple, banana, cherry, date, fig.
| Modo | Descripción | Método JS | Ejemplo de salida |
|---|---|---|---|
| A-Z | Alphabetical ascending | localeCompare() | apple, banana, cherry |
| Z-A | Alphabetical descending | localeCompare() reversed | cherry, banana, apple |
| Length (short) | Shortest line first | a.length - b.length | fig, date, apple, banana |
| Length (long) | Longest line first | b.length - a.length | banana, apple, date, fig |
| Reverse | Flip line order, no reordering | Array.reverse() | Last line becomes first |
| Random | Randomized comparator (biased) | Math.random() - 0.5 | Different every run |
Algoritmos de ordenación en segundo plano
Cuando llamas a Array.sort() en JavaScript, el motor V8 (Chrome, Node.js) usa Timsort desde 2019. Otros entornos de ejecución utilizan algoritmos diferentes. La tabla a continuación compara los algoritmos de ordenación más comunes usados en las bibliotecas estándar de los lenguajes. Todos gestionan las cargas de trabajo de ordenación de líneas de esta herramienta en menos de un milisegundo para entradas típicas (menos de 100.000 líneas).
| Algoritmo | Usado por | Tiempo | Notas |
|---|---|---|---|
| Timsort | Python, Java (Arrays.sort) | O(n log n) | Stable, fast on partially sorted data |
| Quicksort | C stdlib, V8 (older) | O(n log n) | In-place, unstable by default |
| Merge sort | Most stable-sort implementations | O(n log n) | Stable, predictable, uses extra memory |
| Introsort | C++ std::sort, .NET | O(n log n) | Hybrid: quicksort + heapsort fallback |
| Radix sort | Fixed-length keys, integers | O(nk) | Non-comparative, linear for short keys |
Ejemplos de código
Ordena líneas programáticamente en JavaScript, Python, Go y la línea de comandos. Cada ejemplo cubre la ordenación alfabética, por longitud y en orden inverso.
const text = `banana
apple
cherry
date
fig`
// Sort A-Z (locale-aware)
const az = text.split('\n').sort((a, b) => a.localeCompare(b)).join('\n')
// → "apple\nbanana\ncherry\ndate\nfig"
// Sort by line length, shortest first
const byLen = text.split('\n').sort((a, b) => a.length - b.length).join('\n')
// → "fig\ndate\napple\nbanana\ncherry"
// Reverse line order (no alphabetical sorting)
const reversed = text.split('\n').reverse().join('\n')
// → "fig\ndate\ncherry\napple\nbanana"
// Remove duplicates and sort
const unique = [...new Set(text.split('\n'))].sort().join('\n')text = """banana apple cherry date fig""" lines = text.splitlines() # Sort A-Z (case-insensitive) az = sorted(lines, key=str.lower) # → ['apple', 'banana', 'cherry', 'date', 'fig'] # Sort by line length by_len = sorted(lines, key=len) # → ['fig', 'date', 'apple', 'banana', 'cherry'] # Reverse original order rev = lines[::-1] # → ['fig', 'date', 'cherry', 'apple', 'banana'] # Shuffle randomly import random random.shuffle(lines) # modifies in place
package main
import (
"fmt"
"sort"
"strings"
)
func main() {
text := "banana\napple\ncherry\ndate\nfig"
lines := strings.Split(text, "\n")
// Sort A-Z
sort.Strings(lines)
fmt.Println(strings.Join(lines, "\n"))
// → apple\nbanana\ncherry\ndate\nfig
// Sort by length
sort.Slice(lines, func(i, j int) bool {
return len(lines[i]) < len(lines[j])
})
fmt.Println(strings.Join(lines, "\n"))
// → fig\ndate\napple\nbanana\ncherry
}# Sort lines A-Z
sort file.txt
# Sort lines Z-A (reverse)
sort -r file.txt
# Sort numerically (first field)
sort -n data.txt
# Sort by line length (awk + sort + cut)
awk '{ print length, $0 }' file.txt | sort -n | cut -d' ' -f2-
# Shuffle lines randomly
shuf file.txt # GNU coreutils
sort -R file.txt # alternative (not truly uniform)
# Sort and remove duplicates
sort -u file.txt