Tri lexicographiquement en bash


5

Je veux que les données soient triées comme Python les compare, en comparant les valeurs ASCII. Mais sort commande semble trop intelligent pour cela. Regarde. Puisque '.' < '9':

$ sort
.
9
^D
.
9

$ sort
1.
19
^D
1.
19

Ces deux sont bien. Mais pour une raison quelconque, si je viens d'ajouter des caractères aux extrémités:

$ sort
1.c
19z
^D
19z
1.c

Il essaie probablement de lire cela comme un chiffre ou quelque chose comme ça. Je ne veux pas ça, je veux qu'il trie des choses en comparant les valeurs ASCII de chaque caractère. Impossible de trouver une telle option dans man, des idées?

Réponses:


5

Le comportement décrit est probablement un effet de la localisation. Désactiver les paramètres régionaux pour le tri:

$ echo '1.c
19z ' | LC_ALL=C sort
1.c
19z

Wow, merci, essayez cela maintenant (le fichier trié est gros).
valya
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.