1

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

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

A_A1
A\A2
A_A2
A\A1

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

cat test.txt |sort

A_A1
A\A1
A_A2
A\A2

но я хочу:

A_A1
A_A2
A\A1
A\A2

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

1 ответ1

2

От 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 ни LC_COLLATE не установлены, то это возвращается к LANG . Если это не установлено, по умолчанию используется языковой стандарт C

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