Установите порядок сортировки в сортировке оболочки, чтобы не игнорировать специальные символы

Я ищу решение для сортировки в postgres, но, похоже, это больше проблема сортировки, и поэтому я задаю вопрос для стандартной команды сортировки Unix.

у меня есть следующие данные:

A_A1
AA2
A_A2
AA1

после сортировки я получаю:

cat test.txt |sort

A_A1
AA1
A_A2
AA2

но я хочу:

A_A1
A_A2
AA1
AA2

Я тоже пробовал LANG=C cat... но безрезультатно.
Итак, какое правило сортировки позволит мне не игнорировать специальные символы?

25
задан Fabian
29.11.2022 4:23 Количество просмотров материала 3206
Распечатать страницу

1 ответ

С man sort:

Set LC_ALL=C to get the traditional sort order that uses native byte values.

так:

$ LC_ALL=C sort test.txt
A\A1
A\A2
A_A1
A_A2

поэтому локаль C сортирует байтовое значение.


вам нужно

$ cat test.txt | LC_ALL=C sort

если вы хотите передать его по конвейеру (но всегда старайтесь использовать версию имени файла напрямую, если она доступна).


основная переменная среды, влияющая на это LC_COLLATE. Если LC_ALL установлено, хотя, он превосходит все конкретные LC_ значения. Если ни LC_ALL nor LC_COLLATE установлено, он падает обратно на LANG. Если это не задано, по умолчанию используется locale C.

2
отвечен Daniel Andersson 2022-11-30 12:11

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх