Использование того же sort команда с одним и тем же вводом дает разные результаты на разных машинах. Как это исправить?Почему не ** сортировать ** сортировать то же самое на каждой машине?
ответ
man-page на OS X говорит:
******* ******* ВНИМАНИЕ Языковой задаваемый переменной среды влияет на порядок сортировки. Установите LC_ALL = C, чтобы получить традиционный порядок сортировки, который использует значения собственного байта.
который может объяснить вещи.
Если некоторые из ваших систем не поддерживают локаль, они будут по умолчанию использовать этот язык (C), поэтому вам не придется устанавливать его на них. Если у вас есть некоторые, которые поддерживают локали и хотят одинакового поведения, установите LC_ALL=C
на эти системы. Это будет способ иметь как можно больше систем, как я знаю, так же.
Если у вас нет никаких локальных систем, просто убедитесь, что они разделяют локаль, вероятно, будет достаточно.
Для получения более канонической информации см ® Спецификации, Version 2 Описания Единого UNIX из locale, environment variables, setlocale() и описания утилиты sort(1).
Это может быть результатом различий локали:
$ echo 'CO2_
CO_' | env LC_ALL=C sort
CO2_
CO_
$ echo 'CO2_
CO_' | env LC_ALL=en_US sort
CO_
CO2_
Установка переменной среды LC_ALL в то же значение должно исправить эту проблему.
Возможно, это связано с различными настройками locale environment variables. sort
будет использовать эти параметры, чтобы определить, как сравнивать строки. Установив эти переменные среды так, как вы хотите, до вызова sort
, вы должны заставить его вести себя определенным образом.
Для получения более подробной информации о sort
, прочитайте specification of sort
в Single Unix Specification v3. В нем указаны
Сравнения [...] должны выполняться с использованием последовательности сортировки текущего языкового стандарта.
IOW, how sort
Сортировка зависит от локальных (языковых) настроек среды, в которой работает скрипт.
Как установить языковой стандарт на LC_ALL = C? – Malcolm 2012-02-07 17:23:51