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.
Похож на Вас, используют локаль не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'.
Для определения порядка сортировки просто создайте файл с другим символом на каждой строке и виде это. Получающийся вывод скажет Вам порядок сортировки.
Как сказано в 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.
Обратите внимание, что (без учета пробела)
на некоторых клавиатурах это примерно слева направо.