Texto

Cómo ordenar una lista alfabéticamente sin que las mayúsculas salten al principio

Ordenar una lista son diez segundos de trabajo y un montón de sorpresas: mayúsculas arriba, file10 encima de file2, acentos al final.

Para ordenar una lista alfabéticamente, pon un elemento por línea, pásala por algo que ordene por alfabeto y no por código de carácter, y copia el resultado de vuelta. Eso son diez segundos de trabajo. Lo que trae a la gente hasta aquí es la segunda mitad: la lista ordenada llega con todas las mayúsculas amontonadas arriba, o con file10 por encima de file2, o con los nombres acentuados tirados al final. Nada de eso es un fallo. Es lo que significa «alfabético» para una computadora hasta que le dices otra cosa.

Por qué las mayúsculas terminan primero

Un ordenamiento simple compara el texto por los números que hay detrás de los caracteres. En ASCII los dígitos van del 48 al 57, las mayúsculas del 65 al 90 y las minúsculas del 97 al 122, así que toda mayúscula queda por delante de cualquier minúscula y Zebra va antes que apple. Ese es el comportamiento por defecto en JavaScript, en Python, en una columna de base de datos con collation binaria y en el sort de Unix bajo el locale C.

El orden alfabético en el sentido humano es una maquinaria mucho más grande llamada collation. El Unicode Collation Algorithm compara por pasadas —primero las letras base, luego los acentos, luego mayúsculas y minúsculas—, de modo que a y A van juntas y é se coloca junto a la e en vez de arrastrarse detrás de la z. Todo navegador lo trae incluido, y por eso una herramienta que ordena líneas con la collation de tu navegador devuelve el orden que querías, con las mayúsculas intercaladas y los acentos en su sitio.

Cuándo el orden por code point es la respuesta correcta

Conserva la comparación cruda cuando el público es una máquina: comprobar que un archivo de configuración está en el orden que espera un linter, reproducir un índice de base de datos o producir una lista que tiene que salir idéntica byte a byte en todas partes.

Ese último caso importa más de lo que parece, porque la collation depende de verdad del locale. El sueco coloca å, ä y ö después de la z; el alemán las trata como variantes de a y o; el estonio pone la z entre la s y la t. Una herramienta de ordenación sigue el idioma en el que esté configurada la máquina, así que dos colegas en dos países pueden ordenar la misma lista y obtener dos órdenes distintos. Si todos tienen que coincidir, usa code point.

Por qué file10 va antes que file2

Porque el orden alfabético lee los dígitos como caracteres, no como cantidades. Compara el 1 contra el 2, decide que 1 es menor y se detiene ahí. El 0 nunca llega a votar. El orden natural corrige esto tratando cada serie de dígitos como un número, que es lo que espera cualquiera que lea una lista de nombres de archivo, capítulos o números de factura.

No es un arreglo universal. Los strings de versión y los decimales quieren cosas opuestas: bajo las reglas naturales 1.10 es uno punto diez, correcto para un número de versión y equivocado para una medición donde 1.10 es igual a 1.1. Las fechas escritas como 3/4/2025 se ordenan por el número que esté impreso primero y nunca por la fecha real; reescríbelas como 2025-04-03 y el orden alfabético simple se convierte gratis en orden cronológico correcto. Y 007 compara igual que 7 bajo las reglas naturales, así que cuál queda primero depende de cuál escribiste primero.

¿Y si las líneas son números y no palabras?

Entonces lo que quieres es un orden numérico, que extrae el número de cada línea y ordena por su valor, esté donde esté dentro de la línea —incluido 12 Acacia Avenue.

La trampa es que una línea puede contener más de un número y la herramienta tiene que elegir. Tomar el primero suele ser lo correcto —Invoice 204 of 900 se ordena por el 204— y de vez en cuando es un error, como en Route 66 revisited in 1998. Las líneas que no tienen ningún número no tienen posición en una recta numérica; una herramienta sensata las manda al final en lugar de fingir que valen cero.

Cómo ordenar en el software que ya tienes

Una hoja de cálculo

Selecciona la tabla entera, nunca una sola columna, y usa Datos y Ordenar. Ordenar una columna mientras las demás se quedan quietas es la forma clásica de destrozar un conjunto de datos, y el aviso de Excel que pregunta si quieres ampliar la selección es lo único que se interpone entre tú y una hoja donde cada fila pertenece a la persona equivocada. Excel ignora mayúsculas y minúsculas salvo que lo actives en Opciones de ordenación, coloca los números antes que el texto en orden ascendente y deja las celdas vacías al final en cualquiera de las dos direcciones.

Word y editores de código

Word ordena párrafos: Inicio, luego el botón Ordenar A-Z, luego Ascendente. VS Code tiene «Sort Lines Ascending» en la paleta de comandos, sin ningún atajo asignado por defecto, y la mayoría de los editores tienen un equivalente. Los dos sirven para una lista corta, y ninguno te dice qué hizo: ni recuentos, ni un aviso de que cuatro líneas eran idénticas.

La línea de comandos

sort list.txt usa tu locale, así que se comporta más o menos como la collation; LC_ALL=C sort list.txt baja al orden por bytes. Agrega -f para ignorar mayúsculas y minúsculas, -n para números, -V para strings de versión y -u para descartar duplicados de paso. Esas flags son de GNU coreutils; macOS trae la versión BSD, donde el juego de flags no es el mismo. Una sorpresa que vale la pena conocer: en un locale UTF-8, GNU sort ignora en gran medida la puntuación y los espacios al comparar, así que de Luca y DeLuca terminan uno al lado del otro. Útil para nombres, desconcertante para todo lo demás.

Limpia la lista antes de ordenarla

Ordenar es una forma excelente de descubrir todo lo que está mal en tus datos: arrastra las entradas rotas hasta formar un único montón visible.

La herramienta de ordenación de este sitio hace todo eso en una sola pasada e informa los recuentos —líneas que entran, líneas que salen, vacías descartadas, duplicados eliminados—, que es como te das cuenta de que una lista de 340 elementos era en realidad de 312.

Lo que una herramienta de ordenación de líneas no puede hacer por ti

Ordena líneas enteras, lo que significa que ordena por lo que haya al comienzo de la línea. Una lista de nombres escrita como Ada Lovelace se ordena por el nombre de pila, y ninguna opción cambia eso. Para ordenar por apellido tienes que reescribir las líneas con el apellido delante, o pasarte a una hoja de cálculo y armar una columna auxiliar.

Las convenciones también son problema tuyo. Las bibliotecas archivan The Beatles bajo la B, ignorando el artículo inicial, y si van der Berg va bajo la V o bajo la B depende del país. Esas son decisiones editoriales, no ajustes: arregla el texto y después ordena.

Dos límites estructurales. Un CSV con un salto de línea dentro de un campo entrecomillado se parte en el lugar equivocado, porque una herramienta que trabaja por líneas no puede saber que la comilla sigue abierta. Y un esquema indentado queda destruido por completo, porque una línea hija no recuerda de qué línea padre colgaba.

Ordenar por dos claves parece imposible y no lo es: ordena primero por la clave menos importante y después por la más importante. Los ordenamientos estables mantienen los elementos iguales en el orden en que llegaron —JavaScript lo garantiza desde ES2019, GNU sort lo hace con -s—, así que el primer orden sobrevive dentro del segundo, y una lista de personal ordenada por nombre y luego por departamento sale agrupada por departamento con cada grupo alfabetizado.

Por último, el tamaño. Unos cientos de miles de líneas se ordenan al instante en una pestaña del navegador; unos cuantos millones congelarán la página, porque corre en el mismo hilo que dibuja la interfaz. A esa escala la línea de comandos es la respuesta honesta.

La herramienta de ordenación de líneas de aquí cubre toda la rutina en una sola pasada —orden alfabético o natural, con distinción de mayúsculas o sin ella, líneas vacías y duplicados descartados, una fila de encabezado fijada— y la lista nunca sale de tu navegador, lo que importa cuando la lista son nombres de clientes.

Si lo que estás haciendo en realidad es ordenar dos copias de una lista para averiguar qué cambió entre ellas, ordenar es el instrumento equivocado. Comparar dos versiones de un texto te dice exactamente qué entradas se agregaron y cuáles desaparecieron, en vez de dejarte cotejar a ojo dos columnas ordenadas una al lado de la otra.

Preguntas frecuentes

¿Cómo ordeno una lista alfabéticamente?

Pon un elemento por línea y pásalo por una herramienta que ordene por alfabeto y no por código de carácter. En una hoja de cálculo, selecciona la tabla entera y usa Datos y luego Ordenar, nunca una sola columna por su cuenta. En una terminal, el comando sort lo hace, siguiendo el idioma en el que esté configurado tu sistema.

¿Por qué todas las palabras en mayúsculas quedan arriba de mi lista ordenada?

La ordenación está comparando códigos de carácter, donde toda mayúscula tiene un valor menor que cualquier minúscula. Cambia la herramienta a comparación por locale o alfabética, o desactiva la distinción entre mayúsculas y minúsculas. Los lenguajes de programación y las bases de datos con collation binaria hacen esto por defecto.

¿Cómo hago que file2 vaya antes que file10?

Usa el orden natural, que lee una serie de dígitos como un número en vez de como caracteres sueltos. El orden alfabético simple compara el 1 de 10 contra el 2, decide que 1 es menor y se detiene ahí. El orden natural también es el que quieres para capítulos, números de factura y cualquier otra cosa que se cuente.

¿Cómo ordeno una lista de nombres por apellido?

Una herramienta que ordena líneas no puede hacerlo, porque solo puede ordenar por lo que viene primero en cada línea. O reescribes las entradas como "Lovelace, Ada" antes de ordenar, o pegas la lista en una hoja de cálculo, separas los nombres en dos columnas y ordenas por la segunda.

¿Ordenar una lista dos veces deshace el primer orden?

No, siempre que la ordenación sea estable, y las modernas lo son. Los elementos iguales conservan el orden en que llegaron, así que ordenar por departamento después de ordenar por nombre te da los departamentos en orden con los nombres alfabetizados dentro de cada uno. Ordena primero por la clave menos importante.

¿Dos personas que ordenan la misma lista obtienen el mismo orden?

No siempre. La ordenación que depende del locale sigue la configuración de idioma de cada máquina, y los idiomas no se ponen de acuerdo: el sueco coloca la a con anillo y la o con diéresis después de la z, mientras que el alemán las ordena junto a la a y la o. Si el resultado tiene que coincidir en todas partes, usa el orden por code point.

Última actualización 19 de septiembre de 2026