Pero es que te he dado la solución de la ordenación alfanumérica al ver que la primera columna contiene números de 3 dígitos, por lo que supuse que siempre tendrían 3 dígitos, pero por lo que se ve, no es así.
Puedes hacer una
transformada de Schwartz:
Se lee de abajo a arriba:
Using perl Syntax Highlighting
@array
= map { $_->[1] }
sort { $a->[0] <=> $b->[0] }
map { [ (split " ")[0], $_] }
@array
;
Coloreado en 0.003 segundos, usando
GeSHi 1.0.8.4
5: el
@array de donde partimos. Contiene las líneas a ordenar
4: creamos un
array anónimo, con dos elementos. El primero es la primera columna de cada línea (el split(" ", $_) parte la línea por los espacios, y nos quedamos con la primera columna ([0])). El segundo componente es toda la línea, tal cual ($_)
3: Ordenamos, de forma ascendente y numérica, por el primer elemento de los
array que salen de 4
2: el map{} extrae el segundo componente de los
array ya ordenados, que, recordemos, era toda la línea
1: el resultado se queda en el propio
@array.
Creo recordar que hay módulos que tratan ficheros de forma tabular (o tabla) y en ellos permite realizar algunas operaciones de extracción y de ordenación. Pero bueno, para lo que quieres te vale con esa transformada.