Сведения о вопросе

LARVION

08:45, 2nd August, 2020

Теги

bash   unix   sorting   ksh    

Почему **sort** не сортирует то же самое на каждой машине?

Просмотров: 431   Ответов: 4

Использование одной и той же команды сортировки с одинаковыми входными данными приводит к различным результатам на разных машинах. Как мне это исправить?



  Сведения об ответе

9090

03:09, 9th August, 2020

На главной странице OS X написано::

******* WARNING ******* locale, указанный средой, влияет на порядок сортировки. Установите LC_ALL=C, чтобы получить традиционный порядок сортировки, использующий собственные байтовые значения.

что может многое объяснить.

Если некоторые из ваших систем не имеют поддержки locale, они будут по умолчанию использовать этот параметр locale (C), поэтому вам не придется устанавливать его на них. Если у вас есть некоторые, которые поддерживают локали и хотят такого же поведения, установите LC_ALL=C на этих системах. Это был бы способ заставить столько систем, сколько я знаю, делать это таким же образом.

Если у вас нет систем без locale, просто убедитесь, что они разделяют locale, вероятно, будет достаточно.

Для получения дополнительной канонической информации см. спецификацию Single UNIX ®, описание версии 2 для locale, переменных окружения, setlocale() и описание утилиты sort(1) .


  Сведения об ответе

screen

16:03, 9th August, 2020

Это может быть результатом locale различий:

$ echo 'CO2_
CO_' | env LC_ALL=C sort
CO2_
CO_


$ echo 'CO2_
CO_' | env LC_ALL=en_US sort
CO_
CO2_

Установка переменной окружения LC_ALL на то же значение должна исправить проблему.


  Сведения об ответе

piter

21:06, 1st October, 2020

Вероятно, это связано с различными настройками переменных окружения locale . sort будет использовать эти настройки для определения способа сравнения строк. Установив эти переменные среды так, как вы хотите, перед вызовом sort, вы должны быть в состоянии заставить его вести себя определенным образом.


  Сведения об ответе

piter

05:10, 24th August, 2020

Чтобы узнать больше , чем вы когда-либо хотели узнать о sort, прочитайте спецификацию sort в одиночной спецификации Unix v3 . В нем говорится:

Сравнения [...] должно выполняться с использованием последовательности сортировки текущего locale.

IOW, способ сортировки sort зависит от параметров locale (язык) среды, в которой выполняется сценарий.


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться