122 votes

Ce qui ' la différence entre--général-numérique-tri et--options de numérique-tri dans gnu sorte

``fournit deux un peu des types numériques. Il s’agit de la page de manuel sur OS x :

Quelle est la différence ?

90voto

Martin Beckett Points 60406

Général tri numérique de comparer les nombres comme des flotteurs, ce qui permet la notation scientifique par exemple 1.234E10 mais est plus lente et sujette à l'erreur d'arrondi (1.2345678 pourrait venir après 1.2345679), tri numérique est juste un tri par ordre alphabétique qui sait que 10 qui vient après 1

Voir http://www.gnu.org/software/coreutils/manual/html_node/sort-invocation.html

‘-g "‘--général-numérique-tri' ‘--sort=général-numérique " Trier numériquement, en utilisant le standard C la fonction strtod pour convertir un préfixe de chaque ligne à un double précision nombre à virgule flottante. Cela permet des nombres à virgule flottante être spécifié en notation scientifique, comme 1,0 e-34 et 10e100. Le LC_NUMERIC locale détermine la virgule-point caractère. Ne pas faire de rapport de débordement, dépassement de capacité, ou des erreurs de conversion. Utilisation le suivant de la séquence de classement: Les lignes qui ne commencent pas avec les chiffres (tous considérés comme des égaux). NaNs ("Pas un Nombre" valeurs", dans la norme IEEE arithmétique à virgule flottante) dans un cohérente, mais dépendant de la machine ordre. Moins l'infini. Finis les numéros dans l'ordre numérique croissant (avec -0 et +0 égale). Plus l'infini.

Utilisez cette option uniquement si il n'y a pas de alternative; il est beaucoup plus lent que --numeric-sort (-n) et il peut perdre des données lors de la conversion de virgule flottante.

‘-n' ‘--numeric-tri' ‘--sort=numeric' Trier numériquement. Le numéro commence chaque ligne et consiste en option les blancs, en option, un signe" -", et zéro chiffres ou plus, éventuellement séparés par des les séparateurs de milliers, éventuellement suivi par une virgule point de caractère et zéro ou plusieurs chiffres. Un vide nombre est considéré comme ‘0'. L' LC_NUMERIC spécifie les paramètres régionaux decimal point de caractère et des milliers séparateur. Par défaut, un blanc est un espace ou une tabulation, mais le LC_CTYPE paramètres régionaux peuvent changer cela.

La comparaison est exacte; il n'y a pas de erreur d'arrondi.

Ni l'un des principaux‘+', ni exponentielle la notation est reconnu. Pour comparer ces chaînes numérique, utilisez la --général-numérique-sort (-g) en option.

11voto

JFL Points 364

Vous devez être prudent avec vos paramètres régionaux. Par exemple, vous souhaitez peut trier un nombre flottant (comme 2.2) alors que votre pays peut attendre de l'utilisation d'une virgule (comme 2,2).

Comme indiqué dans ce forum, vous pourriez avoir de faux résultats utilisation de l'option-n ou-g drapeaux.

Dans mon cas, j'utilise:

export LANG=C && sort -k 6,6n file

afin de trier la 6e colonne qui contient:

2.5
3.7
1.4

afin d'obtenir

1.4
2.5
3.7

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X