Cómo ordenar líneas alfabéticamente (y otros cuatro órdenes)

Alfabético, numérico, por longitud, inverso y aleatorio. Cinco órdenes, cada uno útil en un contexto distinto. Las pulsaciones para lograrlo en el navegador, en Excel y desde la línea de comandos.

En esta página

Los cinco órdenes

Cinco órdenes cubren cerca del 95 % de las tareas de ordenamiento prácticas. Cada uno es un botón distinto en la herramienta del navegador:

  1. Alfabético (A → Z). El predeterminado. Compara carácter por carácter usando las reglas de cotejo de la configuración regional.
  2. Alfabético inverso (Z → A). Igual que el anterior, al revés.
  3. Numérico. Trata las líneas como números. Crucial para ID, precios, conteos. Sin el modo numérico, «10» se ordena antes que «2».
  4. Por longitud (la más corta primero o la más larga primero). Cuenta los caracteres por línea y ordena por eso. Útil para encontrar la URL más larga o la contraseña más corta.
  5. Aleatorio. La mezcla Fisher-Yates. El mismo algoritmo que usa la herramienta Mezclar Líneas.
Publicidad

Navegador — el camino de 5 segundos

Abre la herramienta Ordenar Líneas. Pega tu lista. Haz clic en el orden que quieras. Copia el resultado. Listo.

La opción menos obvia: distinguir o no las mayúsculas. Las herramientas del navegador suelen ignorarlas por defecto porque coincide con lo que la gente espera. El ordenamiento ASCII estricto pone todas las mayúsculas antes que todas las minúsculas, que casi nunca es lo que quieres para listas legibles.

Un pegado, salida ordenada. La herramienta Ordenar Líneas maneja los cinco órdenes, más una deduplicación opcional. Solo local, nada sale del navegador.

Excel / Google Sheets

Para listas que ya están en una hoja de cálculo:

  1. Selecciona la columna.
  2. Datos → Ordenar → de A a Z (o de Z a A, o personalizado).

Para que el orden numérico funcione, las celdas deben contener números reales, no representaciones de texto. Excel y Sheets lo detectan de forma automática. Pero si importaste los números como texto, cambia primero el formato de la celda.

Para ordenar por varias columnas (ordenar por la columna A y desempatar con la columna B), usa el cuadro de Orden personalizado y agrega niveles de orden adicionales.

Línea de comandos — sort

El comando sort de Unix es la herramienta de fuerza de producción. Las banderas más útiles:

BanderaEfecto
sort fileAlfabético, según la configuración regional
sort -r fileInverso
sort -n fileNumérico (trata las líneas como números)
sort -f fileSin distinguir mayúsculas
sort -u fileOrdenar + deduplicar
sort -R fileAleatorio (mezcla)
sort -k 2 fileOrdenar por el segundo campo separado por espacios
sort -t, -k 2 fileOrdenar por el segundo campo separado por comas (CSV)

Para archivos más grandes que la RAM (más de unos pocos GB en una laptop típica), sort usa de forma automática un ordenamiento por mezcla externa y funciona correctamente sin ajustar ninguna bandera.

Las trampas

Trampa 1: alfabético frente a numérico en listas de números. La lista [1, 2, 10, 100, 11] en orden alfabético se vuelve [1, 10, 100, 11, 2]. Elige siempre el orden numérico para los números.

Trampa 2: espacios invisibles. Una lista pegada de otro lado puede tener espacios al final, tabuladores al inicio o espacios de no separación. Afectan el orden. Recorta antes de ordenar si la limpieza importa. La herramienta Ordenar Líneas ofrece un interruptor de «recortar espacios».

Trampa 3: ordenamiento según la configuración regional con texto no inglés. La ä alemana se ordena después de la z en algunas configuraciones, entre la a y la b en otras, y como equivalente a ae en otras más. Fija la configuración regional de forma explícita (o usa LC_ALL=C para el orden por punto de código) cuando la reproducibilidad importa.

Trampa 4: orden estable frente a inestable. Un orden estable conserva el orden original de los elementos que comparan iguales. Uno inestable no. En la mayoría de las herramientas del navegador y en el sort de Unix, obtienes un orden estable. Si encadenas ordenamientos (ordenar por una clave primaria y luego por una secundaria), la estabilidad importa. Úsala.

Ejemplos prácticos

Ordenar una lista de URLs para encontrar la más larga. Ordena por longitud de mayor a menor. La primera línea es la URL más larga. Útil para detectar la contaminación por parámetros de seguimiento.

Ordenar una columna de CSV con precios. Orden numérico. Quita primero el signo de dólar del prefijo si hace falta (buscar/reemplazar $ → vacío).

Ordenar una lista de nombres «Apellido, Nombre» alfabéticamente por apellido. El orden alfabético estándar funciona porque la coma va antes del nombre. La lista se ordena primero por todo lo que está antes de la coma.

Ordenar una lista de URLs por dominio. Difícil con herramientas que solo trabajan por línea. Baja a awk o Python: analiza la URL, extrae el dominio y ordena por eso.

Para la referencia más a fondo sobre las operaciones con listas, incluida la deduplicación, la mezcla y el reformateo, mira operaciones con listas: la guía completa. Para la mezcla en concreto, mira cómo mezclar líneas (Fisher-Yates).

Preguntas frecuentes

¿Por qué «10» se ordena antes que «2» alfabéticamente?

Porque el orden alfabético compara carácter por carácter. «1» es menor que «2», así que «10...» se ordena antes que «2...». Para el orden numérico, usa una herramienta que reconozca números y trate «10» como 10.

¿Cómo ordeno sin distinguir mayúsculas?

La mayoría de las herramientas de ordenamiento modernas tienen un interruptor para no distinguir mayúsculas. La herramienta Ordenar Líneas de TextKit lo ignora por defecto. En Excel, usa el cuadro de Orden personalizado y desmarca «Distinguir mayúsculas». En bash, usa sort -f o LC_ALL=C.UTF-8 sort.

¿Cuál es la forma más eficiente de ordenar millones de líneas?

Para más de un millón de líneas, el comando sort de línea de comandos en Linux/macOS es el más rápido. Usa un ordenamiento por mezcla externa que maneja archivos más grandes que la RAM. Las herramientas del navegador empiezan a ralentizarse pasado ~1 M de líneas.

¿Por qué mi orden separa los apóstrofos de forma rara?

Algunas configuraciones regionales ordenan O'Brien con reglas de cotejo donde el apóstrofo se ubica distinto a lo esperado. Pon LC_ALL=C en el sort del shell, o elige «orden ASCII» en las herramientas del navegador, para obtener el orden por punto de código.

¿Puedo ordenar por una columna específica de un CSV?

Sí. Pero no con una herramienta que ordena línea por línea. Usa Excel, Google Sheets o el sort -t, -k 2 del shell (ordenar por el segundo campo separado por comas). Las herramientas de una sola línea ordenan por toda la línea.

Publicidad

Seguir leyendo

Escrito por . Creamos las herramientas sobre las que escribimos. Prueba la herramienta Ordenar Líneas que usamos en este artículo.