Je souhaite trier un fichier:
D104HN-D104HA 8.320 4.521 1.69e+05 --
D104HN-D104HB* 8.320 2.823 2.93e+05 --
A90HB#-A90HA 1.655 4.207 7.12e+05 --
A90HB#-F91HA 1.653 4.411 8.59e+04 --
A114HB#-A114HA 1.253 4.098 7.67e+05 --
A114HB#-R111HA 1.251 3.929 1.76e+05 --
A114HB#-W110HA 1.253 4.451 3.68e+04 --
F91HE*-F91HZ 7.237 7.122 7.85e+05 --
F91HE*-K92HA 7.242 3.910 4.88e+04 --
et obtenez ceci
A90HB#-A90HA 1.655 4.207 7.12e+05 --
A90HB#-F91HA 1.653 4.411 8.59e+04 --
F91HE*-F91HZ 7.237 7.122 7.85e+05 --
F91HE*-K92HA 7.242 3.910 4.88e+04 --
D104HN-D104HA 8.320 4.521 1.69e+05 --
D104HN-D104HB* 8.320 2.823 2.93e+05 --
A114HB#-A114HA 1.253 4.098 7.67e+05 --
A114HB#-R111HA 1.251 3.929 1.76e+05 --
A114HB#-W110HA 1.253 4.451 3.68e+04 --
Autrement dit, trier numériquement le deuxième caractère et les caractères suivants de la première séquence de non-blancs sur la ligne.
text-processing
files
sort
edith
la source
la source
sort
commande?Réponses:
Trie de manière
n
umérique sur un œilk
commençant par le2
nième caractère du champ1
st en ignorant lesb
lanks de tête (et se terminant à la fin de la ligne, mais cela n'a pas d'importance pour un tri numérique qui ne prend en compte que la séquence initiale de chiffres décimaux).Notez que s'il y a une égalité, comme entre ces deux lignes:
Ensuite, l'ordre sera basé sur le tri de dernier recours qui compare complètement les deux lignes sous forme de chaînes.
Avec certains paramètres régionaux, les blancs seraient ignorés en premier lieu pour comparer les chaînes, auquel cas le F91 viendrait avant K92 (comme
F
trié auparavantK
). Avec d'autres comme dans les paramètres régionaux C, les blancs ne seraient pas ignorés et le K92 viendrait alors avant le F91 (tri de l'espace avantF
).Pour un tri de dernier recours qui ignorerait les espaces vides quels que soient les paramètres régionaux, vous pouvez faire:
Celui-
1b
ci serait trié (sur les liens sur la première clé) lexicalement sur la section de la ligne qui commence par le premier champ en ignorant les blancs en tête.la source