J'essaie de trier un fichier comme celui-ci (qui est une liste de noms de sous-programmes)
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
...
selon l'entier entre parenthèses. J'ai d'abord essayé la commande de tri comme
sort -t '=' -k 2 routine_list.txt
mais alors fn = (916) vient à la fin de la sortie.
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
mais je voudrais que les nombres soient triés dans l'ordre croissant (916 -> 1368 -> 1370 -> ...) Est-il possible de le faire relativement simplement en utilisant plusieurs commandes ou options?
Réponses:
Que diriez-vous:
Test:
-n
indique que nous trions numériquementt'('
définit le délimiteur comme(
-k2
définit la clésort
comme deuxième champ, c'est-à-dire à partir des chiffres jusqu'à la fin de la ligne.la source
(
comme délimiteur plutôt=
que comme si vous utilisiez(
alors le tri peut commencer numériquement à partir du point de départ du deuxième champ ..Essaye ça. Définit le délimiteur sur =, puis utilise le champ 2 à partir du caractère 2 (en ignorant le "(").
Ou même
la source