Ответ 1
Посмотрите на страницу для сортировки...
-n, --numeric-sort compare according to string numerical value
Итак, вот пример...
sort -n filename
Пример: содержимое файла File.txt:
100 foo
2 bar
300 tuu
При использовании 'sort -k 1,1 File.txt' порядок строк не изменится, хотя мы ожидаем:
2 bar
100 foo
300 tuu
Как мы можем отсортировать поле, состоящее из чисел, основанных на абсолютном числовом значении?
Посмотрите на страницу для сортировки...
-n, --numeric-sort compare according to string numerical value
Итак, вот пример...
sort -n filename
Отказ от ответственности: я знаю, что этот вопрос был дан ответ давно, но, возможно, это будет полезно для некоторых посетителей вопроса.
Если вы сортируете строки, которые являются смешанным текстом и номерами, например имена файлов скользящих журналов, сортировка с помощью sort -n
работает не так, как ожидалось:
$ ls |sort -n
output.log.1
output.log.10
output.log.11
output.log.12
output.log.13
output.log.14
output.log.15
output.log.16
output.log.17
output.log.18
output.log.19
output.log.2
output.log.20
output.log.3
output.log.4
output.log.5
output.log.6
output.log.7
output.log.8
output.log.9
В этом случае опция -V
выполняет трюк:
$ ls |sort -V
output.log.1
output.log.2
output.log.3
output.log.4
output.log.5
output.log.6
output.log.7
output.log.8
output.log.9
output.log.10
output.log.11
output.log.12
output.log.13
output.log.14
output.log.15
output.log.16
output.log.17
output.log.18
output.log.19
output.log.20
на странице man:
-V, --version-sort natural sort of (version) numbers within text
Ну, большинство других ответов здесь относятся к
sort -n
Однако я не уверен, что это работает для отрицательных чисел. Вот результаты, которые я получаю с сортировкой версии 6.10 на Fedora 9.
Входной файл:
-0.907928466796875
-0.61614990234375
1.135406494140625
0.48614501953125
-0.4140167236328125
Вывод:
-0.4140167236328125
0.48614501953125
-0.61614990234375
-0.907928466796875
1.135406494140625
Что явно не упорядочено по числовому значению.
Тогда, я думаю, более точным ответом будет использование sort -n
, но только если все значения положительны.
P.S.: Использование sort -g
возвращает только те же результаты для этого примера
Edit:
Похоже, что настройки языка влияют на то, как знак минуса влияет на порядок (см. здесь). Чтобы получить правильные результаты, я просто сделал:
LC_ALL=C sort -n filename.txt
Вам нужно использовать числовую сортировку:
sort -n -k 1,1 File.txt
Используйте sort -n
или sort --numeric-sort
.
Вы должны выполнить следующую команду:
sort -n -k1 filename
Это должно сделать это:)
Используйте sort -nr для сортировки в порядке убывания. См
Обратитесь к предыдущей странице Man для дополнительной справки
echo " Enter any values to sorting: "
read n
i=0;
t=0;
echo " Enter the n value: "
for(( i=0;i<n;i++ ))
do
read s[$i]
done
for(( i=0;i<n;i++ ))
do
for(( j=i+1;j<n;j++ ))
do
if [ ${s[$i]} -gt ${s[$j]} ]
then
t=${s[$i]}
s[$i]=${s[$j]}
s[$j]=$t
fi
done
done
for(( i=0;i<n;i++ ))
do
echo " ${s[$i]} "
done