Поведением порядка сортировки вида (1) управляют Ваши настройки локали (см. man locale
).
Существует много различных настроек локали, например:
$ locale
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
...
LC_ALL=
Для выбора желаемого поведения вида необходимо выбрать корректное значение LC_COLLATE. В этом случае стандарт, созданный в C (POSIX) локаль, подходит:
$ sort testcase
aa
a-b
ac
$ LC_COLLATE=C sort testcase
a-b
aa
ac
Если Вы предпочитаете, можно установить все настройки локали (таким образом являющийся более последовательным) установкой LC_ALL=C. Так как это переменные среды, можно постоянно установить порядок сортировки, с export LC_ALL=C
или подобный, в Вашей оболочке запускают сценарий.