Exemple file.txt
:
100 foo
2 bar
300 tuu
Lors de l'utilisation sort -k 1,1 file.txt
, l'ordre des lignes ne changera pas, bien que nous nous attendions à:
2 bar
100 foo
300 tuu
Comment trier un champ composé de nombres en fonction de la valeur numérique absolue?
-g, --general-numeric-sort
pourrait être plus recommandée. Cela permet en outre la notation scientifique par exemple 1.234E10 etc.Si vous triez des chaînes contenant du texte et des nombres, par exemple des noms de fichiers de journaux de roulement, le tri avec
sort -n
ne fonctionne pas comme prévu:Dans ce cas, l'option
-V
fait l'affaire:à partir de la page de manuel:
la source
ls
passe lessed
substitutions pour supprimer les lettres et ne laisser que des chiffres, apparemment, la sortie colorée affectait également les choses. Donc courir als --color=never
aussi fait une différence.-V
c'est exactement ce que je cherchais. Je devrais prendre l'habitude de parcourir d'abord les pages de manuel.Eh bien, la plupart des autres réponses ici se réfèrent à
Cependant, je ne suis pas sûr que cela fonctionne pour les nombres négatifs. Voici les résultats que j'obtiens avec la version 6.10 de tri sur Fedora 9.
Fichier d'entrée:
Production:
Ce qui n'est évidemment pas ordonné par valeur numérique.
Ensuite, je suppose qu'une réponse plus précise serait d'utiliser
sort -n
mais uniquement si toutes les valeurs sont positives.PS: utilisation
sort -g
renvoie exactement les mêmes résultats pour cet exempleÉditer:
On dirait que les paramètres régionaux affectent la façon dont le signe moins affecte l'ordre ( voir ici ). Afin d'obtenir des résultats corrects, je viens de faire:
la source
Vous devez utiliser l'option de tri numérique:
la source
Utilisez
sort -n
ousort --numeric-sort
.la source
Vous devez exécuter la commande suivante:
sort -n -k1 filename
Ça devrait le faire :)
la source
Utilisez sort -nr pour trier par ordre décroissant. Référer
Trier
Reportez-vous à la page de manuel ci-dessus pour plus d'informations.
la source
la source