Próbowałem posortować zawartość pliku na pulpicie Ubuntu 14.04 (Trusty Tahr). W moim przypadku oczekiwany wynik powinien być taki sam jak oryginalna treść, ale rzeczywisty wynik nie. Dlaczego?
# cat test.txt
a++-a
a++-b
a++-c
ab
ac
# cat test.txt | sort
a++-a
ab
a++-b
ac
a++-c
command-line
sort
użytkownik2909884
źródło
źródło
cat
.cat test.txt | sort
przezsort test.txt
:)cat
na początek. Na przykładcat FILE | grep dev | sort
będą wyświetlać tylko wiersze z „dev” w nich (w posortowanej kolejności). Użyciesort FILE | grep dev
powoduje uzyskanie tej samej wydajności, ale zabarwionej.Odpowiedzi:
Możesz użyć
LC_ALL
zmiennej, ustaw ją naLC_ALL=C
przed wywołaniemsort
Przeczytaj tę odpowiedź, jeśli chcesz wiedzieć, co to jest magicznie
LC_ALL=C
. Oto krótkie podsumowanie:Ponadto, jak wskazał @KenMollerup, cytat z
man sort
Tak więc, używając sortowania z
LC_ALL=C
, sortuj symbole porównawcze jednocześnie. W przeciwnym raziesort
zignorują wszystkie znaki niealfanumeryczne.źródło
man sort
. Nie zauważyłem tegoSortowanie wykorzystuje sortowanie alfabetyczne i numeryczne, tak samo jak my, znaki specjalne, takie jak + - <> ... są ignorowane, liczby są traktowane numerycznie, więc 1, 2, 3 .. występuje przed 11, 12 1066 1104 - patrz!
Więc twoja lista jest postrzegana jako: aa, ab, ab, ac, ac
źródło
man sort
, dodaj przykłady.