Каков порядок по умолчанию вида Linux?

expr может обработать сравнения плавающие как этот, очень хорошо.

ksh -c '(( $(expr 3.2 \> 3) == 1 )) && echo 1 || echo 0'

или используйте его в сценарии, как:

#!/usr/bin/ksh

if [ $(expr $1 \> $2) == 1 ]; then
    echo "greater"
else 
    echo "lesser"  
fi

можно найти, что expr является более портативным, потому что до н.э строка, которую Вы используете выше работ над Linux, но не над solaris., использующим expr, должна работать то же над любым из тех Ose.

18
18.09.2014, 20:04
3 ответа

Похож на Вас, используют локаль неPOSIX.

Попытка:

export LC_ALL=C

и затем sort.

info sort ясно говорит:

(1) Если Вы используете локаль неPOSIX (например, установкой 'LC_ALL' к 'en_US'), то 'вид' может произвести вывод, который отсортирован по-другому, чем Вы приучены к. В этом случае установите переменную среды 'LC_ALL' на 'C'. Обратите внимание, что установка только 'LC_COLLATE' имеет две проблемы. Во-первых, это неэффективно, если 'LC_ALL' также установлен. Во-вторых, это имеет неопределенное поведение, если 'LC_CTYPE' (или 'ЛЕНГ', если 'LC_CTYPE' сброшен) установлен на несовместимое значение. Например, Вы получаете неопределенное поведение, если 'LC_CTYPE' является 'ja_JP.PCK', но 'LC_COLLATE' является 'en_US.UTF-8'.

17
27.01.2020, 19:46
  • 1
    OP спрашивает, каков порядок сортировки, не, как изменить его. –   19.07.2012, 09:25
  • 2
    Спасибо, я протестировал на своей машине, и настройки локали действительно влияют на поведение –   19.07.2012, 11:01

Для определения порядка сортировки просто создайте файл с другим символом на каждой строке и виде это. Получающийся вывод скажет Вам порядок сортировки.

3
27.01.2020, 19:46
  • 1
    вида Хорошее, простое и эффективное спасибо –   19.07.2012, 11:01
  • 2
    Обычно очень хорошая идея, но это не всегда достаточно. Сопоставление не должно быть определено только на отдельных символах. Некоторая обработка сопоставлений, "одна", как будто это была лигатура или лигатуры обработки, как будто они анализировались. Другой случай - то, что много сопоставлений рассматривают и как равные, но порядок, который Вы видите путем тестирования, не говорит Вам, что (может сказать Вам, стабилен ли вид). И односимвольный тест не говорит, в действительности ли расширение вкладки, пробельная нормализация, и т.д. Тем не менее, это - очень хорошее место для запуска. –  TextGeek 15.12.2017, 19:48
  • 3
    (слишком поздно для редактирования предыдущего комментария) - пока Вы на самом деле включаете достаточно разнообразный диапазон символов можно сказать игнорирование случая от наблюдения (например), aAbB вместо abAB. –  TextGeek 15.12.2017, 20:11

Как сказано в man sort , «порядок словаря» означает «Рассматривать только пробелы и буквенно-цифровые символы». Например, для данных

The
!quick
brown
@fox
jumps
#over
17
$lazy
  dogs
%42
times.

неприкрашенная команда sort выдает

  dogs
!quick
#over
$lazy
%42
@fox
17
brown
jumps
The
times.

(помещая строки, начинающиеся с пробелов и ! , # , $ , % и @ символы 1 перед строками, начинающимися с букв и цифр; т.е. буквенно-цифровых символов ), но sort -d производит

  dogs
17
%42
brown
@fox
jumps
$lazy
#over
!quick
The
times.

собак по-прежнему первый, потому что он начинается с пробелов, но специальные символы (знаки препинания) игнорируются. 17 предшествует 42 , а лисица находится между коричневым и прыжками , несмотря на то, что перед 42 и fox есть символы это обычно перемещает их до 17 .
____________
1 в порядке их значений ASCII: пробел = 040, ! = 041, # = 043, $ = 044, % = 045 и @ = 0100. Обратите внимание, что (без учета пробела) на некоторых клавиатурах это примерно слева направо.

2
27.01.2020, 19:46

Теги

Похожие вопросы