sort
Narzędzie w Ubuntu 10.04 (Lucid) zawsze sortować według wielkości liter, tak jak w przypadku określenia --ignore-case
do niego.
The two sort just give the same result:
echo -e "c\nb\nB\na" | sort
echo -e "c\nb\nB\na" | sort --ignore-case
Ale czasami chcę sortować według wielkości liter, więc najpierw pojawiają się wielkie litery, a następnie małe litery. Czy to możliwe?
echo $'B\nÄ\nb\na' | LC_COLLATE=C sort
. Czy fakt, że GNUsort
z nielokalnymC
ustawieniem zawsze wykonuje sortowanie bez rozróżniania wielkości liter, nie powinien być uważany za błąd ?C.UTF-8
locale (LC_COLLATE=C.UTF-8
) sortuje z rozróżnianiem wielkości liter, a znaki „UTF-8” inne niż ascii „normalnie”. Niestety, nie jest dostępny w glibc w górę i tylko łatany przez Debiana, Ubuntu i pochodne.Co ciekawe, dostępna jest jeszcze jedna kolejność sortowania:
która umieszcza wielką literę przed odpowiadającą jej małą literą.
Oto porównanie ich wyników (dodałem „d” i „D”) w
en_US.UTF-8
ustawieniach regionalnych (z wyjątkiem sytuacji, gdy zostały zastąpione):echo -e "d\nD\nc\nb\nB\na" | sort
echo -e "d\nD\nc\nb\nB\na" | sort --ignore-case
echo -e "d\nD\nc\nb\nB\na" | LC_COLLATE=C sort
echo -e "d\nD\nc\nb\nB\na" | LC_COLLATE=C sort --ignore-case
Wydajność:
źródło
sort
v5.93
(pochodzi z OS X 10.9.3 (!)) Orazv8.13
, ale NIE wv8.21
iv8.22
. Myślę, że wyniki 2. i 4. nadal można uznać za równoważne (ale to oczywiście zmieniłoby się po dodaniu obcych znaków).