Question

En utilisant la même tri commande avec la même entrée produit des résultats différents sur différentes machines.Comment puis-je régler ce problème?

Était-ce utile?

La solution

L' l'homme-page sur OS X, dit:

* * * * * * * * * AVERTISSEMENT ******* Les paramètres régionaux spécifiés par l'environnement sur l'ordre de tri.Ensemble LC_ALL=C, pour obtenir l'ordre de tri traditionnel qui utilise natif valeurs d'octets.

ce qui pourrait expliquer les choses.

Si certains de vos systèmes n'ont pas de support de locale, ils le feraient défaut pour ce jeu de paramètres régionaux (C), de sorte que vous n'aurez pas à le mettre sur les personnes.Si vous avez quelques qui prend en charge les paramètres régionaux et veux le même problème, définissez LC_ALL=C sur ces systèmes.Ce serait le moyen d'avoir autant de systèmes que je sais faire de la même façon.

Si vous n'avez pas de paramètres régionaux des systèmes, tout en s'assurant qu'ils partagent locale serait probablement suffisant.

Pour plus d'canonique d'informations, consultez la La Single UNIX Specification, Version 2 description de paramètres régionaux, les variables d'environnement, setlocale() et la description de l' de tri(1) utilitaire.

Autres conseils

Cela peut être le résultat de paramètres régionaux différences:

$ echo 'CO2_
CO_' | env LC_ALL=C sort
CO2_
CO_


$ echo 'CO2_
CO_' | env LC_ALL=en_US sort
CO_
CO2_

Définition de la variable d'environnement LC_ALL à la même valeur devrait corriger le problème.

C'est probablement en raison de différents paramètres de la paramètres régionaux variables d'environnement. sort utilisez ces paramètres pour déterminer comment comparer des chaînes de caractères.Par la définition de ces variables d'environnement comme vous le souhaitez avant d'appeler sort, vous devriez être en mesure de le forcer à se comporter de manière spécifique.

Pour plus que vous avez toujours voulu savoir sur sort, lire la spécification de sort dans le Spécifications Single Unix v3.Il déclare

Comparaisons [...] doivent être effectuées à l'aide de la séquence de classement de la locale courante.

OIE, comment sort sortes dépend de la locale (langue) paramètres de l'environnement que le script est en cours d'exécution en vertu de l'.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top