Przykład file.txt
:
100 foo
2 bar
300 tuu
Podczas używania sort -k 1,1 file.txt
kolejność wierszy się nie zmieni, chociaż oczekujemy:
2 bar
100 foo
300 tuu
Jak posortować pole składające się z liczb na podstawie bezwzględnej wartości liczbowej?
-g, --general-numeric-sort
może być bardziej wskazane. To dodatkowo umożliwia notację naukową, np. 1.234E10 itp.Jeśli sortujesz ciągi zawierające tekst i liczby, na przykład nazwy plików dzienników przewijanych, sortowanie
sort -n
nie działa zgodnie z oczekiwaniami:W takim przypadku opcja
-V
załatwia sprawę :ze strony podręcznika:
źródło
ls
przezsed
przelotki, aby usunąć litery i zostawić tylko cyfry, najwyraźniej kolorowe wyjście również miało wpływ. Więc bieganiels --color=never
też miało znaczenie.-V
właśnie tego szukałem. Powinienem mieć w zwyczaju przeglądanie najpierw stron podręcznika.Cóż, większość innych odpowiedzi tutaj dotyczy
Jednak nie jestem pewien, czy to działa w przypadku liczb ujemnych. Oto wyniki, które otrzymuję w wersji sortowania 6.10 w Fedorze 9.
Plik wejściowy:
Wynik:
Który oczywiście nie jest uporządkowany według wartości liczbowej.
Wtedy wydaje mi się, że dokładniejszą odpowiedzią byłoby użycie,
sort -n
ale tylko wtedy, gdy wszystkie wartości są dodatnie.PS: Użycie
sort -g
zwraca te same wyniki w tym przykładzieEdytować:
Wygląda na to, że ustawienia regionalne wpływają na to, jak znak minus wpływa na kolejność ( patrz tutaj ). Aby uzyskać prawidłowe wyniki, właśnie zrobiłem:
źródło
Musisz użyć opcji sortowania numerycznego:
źródło
Użyj
sort -n
lubsort --numeric-sort
.źródło
Musisz wykonać następujące polecenie:
sort -n -k1 filename
Że należy to zrobić :)
źródło
Użyj sort -nr do sortowania w porządku malejącym. Odnosić się
Sortować
Więcej informacji można znaleźć na powyższej stronie podręcznika
źródło
źródło