32

Утилита sort в Ubuntu 10.04 (Lucid) всегда сортирует без учета регистра, как если бы вы указали для него --ignore-case .

The two sort just give the same result: 

echo -e "c\nb\nB\na" | sort
echo -e "c\nb\nB\na" | sort --ignore-case

Но иногда я хочу сортировать по регистру, поэтому сначала идут заглавные буквы, затем строчные. Является ли это возможным?

2 ответа2

29

Отменить порядок сопоставления.

echo -e "c\nb\nB\na" | LC_COLLATE=C sort
11

Интересно, что доступен еще один порядок сортировки:

echo -e "c\nb\nB\na" | LC_COLLATE=C sort --ignore-case

который помещает заглавную букву перед соответствующей строчной буквой.

Вот сравнение их выходных данных (я добавил "d" и "D") в en_US.UTF-8 (кроме переопределенных):

  1. echo -e "d\nD\nc\nb\nB\na" | sort
  2. echo -e "d\nD\nc\nb\nB\na" | sort --ignore-case
  3. echo -e "d\nD\nc\nb\nB\na" | LC_COLLATE=C sort
  4. echo -e "d\nD\nc\nb\nB\na" | LC_COLLATE=C sort --ignore-case

Выход:

1   2   3   4
-   -   -   -
a   a   B   a
b   b   D   B
B   B   a   b
c   c   b   c
d   d   c   D
D   D   d   d

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .