Estoy tratando de ordenar un archivo como este (que es una lista de nombres de subrutinas)
cfn=(1370) __lib_file_MOD_file_open
fn=(1368) __universe_MOD_general_boot
fn=(916) __universe_MOD_general_main
fn=(6142) __grid_var_MOD_get_overlap
...
de acuerdo con el número entero entre paréntesis. Primero probé el comando de clasificación como
sort -t '=' -k 2 routine_list.txt
pero luego fn = (916) viene al final de la salida.
fn=(1368) __universe_MOD_general_boot
cfn=(1370) __lib_file_MOD_file_open
fn=(6142) __grid_var_MOD_get_overlap
...
fn=(916) __universe_MOD_general_main
pero me gustaría que los números se clasifiquen en orden creciente (916 -> 1368 -> 1370 -> ...) ¿Es posible hacer esto de manera relativamente simple usando varios comandos u opciones?
Respuestas:
Qué tal si:
Prueba :
-n
indica que estamos ordenando numéricamentet'('
establece el delimitador como(
-k2
establece la clavesort
como el segundo campo, es decir, desde los dígitos hasta el final de la línea.fuente
(
como delimitador en lugar de=
como si lo usara,(
entonces la clasificación puede comenzar numéricamente desde el punto de partida del segundo campo ...Prueba esto. Establece el delimitador en =, y luego usa el campo 2 desde el carácter 2 en adelante (ignorando el "(").
O incluso
fuente