Долгое время я думал, что стандартное поведение sort
программы использует порядок ASCII. Однако, когда я ввожу следующие строки sort
без каких-либо аргументов:
#
@
Я получил:
@
#
Но согласно таблице ASCII, #
это 35 и @
64. Другой пример:
A
a
И вывод:
a
A
Кто-нибудь может объяснить это? Кстати, что такое «словарь-порядок» при использовании sort -d
?
Ответы:
Похоже, вы используете не POSIX локаль.
Пытаться:
а потом
sort
.info sort
ясно говорит:источник
Чтобы определить порядок сортировки, просто создайте файл с различным символом в каждой строке и выполните сортировку. В результате вы получите порядок сортировки.
источник
Как
man sort
говорится, «словарь-порядок» означает «учитывать только пробелы и буквенно-цифровые символы». Например, учитывая данныенеукрашенная
sort
команда производит(ввод строки , которые начинаются с символами пробела и
!
,#
,$
,%
и@
символами 1 впереди строк , которые начинаются с буквами и цифрами, то есть буквенно - цифровые символы ), ноsort -d
производитdogs
все еще первый, потому что он начинается с пробелов, но специальные (знаки пунктуации) игнорируются.17
предшествует42
иfox
встает междуbrown
иjumps
, несмотря на то, что42
иfox
есть символы перед ними, которые обычно перемещают их перед17
.____________
1 в порядке их значений ASCII: пробел = 040,
!
= 041,#
= 043,$
= 044,%
= 045 и@
= 0100. Обратите внимание, что (без учета пробела) это примерно слева направо на некоторых клавиатурах.источник
sort
должны отличаться во многих Распределениях.