Yanıtlar:
Sıralama için man sayfasına bir göz atın ...
-n, --numeric-sort compare according to string numerical value
İşte bir örnek ...
sort -n filename
-g, --general-numeric-sort
daha tavsiye edilebileceğini unutmayın . Bu ayrıca bilimsel gösterime izin verir, örneğin 1.234E10 vb.
Karışık metin ve sayılardan oluşan dizeleri sıralıyorsanız, örneğin kayan günlüklerin dosya adları ile sıralama sort -n
beklendiği gibi çalışmaz:
$ 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
Bu durumda seçenek -V
hile yapar:
$ 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 sayfasından:
-V, --version-sort natural sort of (version) numbers within text
ls
geçişleri sed
değiştirirken bile , görünüşe göre renkli çıktının işleri de etkiliyor olmasıydı. Yani koşmak ls --color=never
da bir fark yarattı.
-V
tam da aradığım şey buydu. Önce man sayfalarına bakmayı alışkanlık haline getirmeliyim.
Pekala, buradaki diğer cevapların çoğu,
sort -n
Ancak, bunun negatif sayılar için çalıştığından emin değilim. İşte Fedora 9'da 6.10 sıralama sürümüyle aldığım sonuçlar.
Giriş dosyası:
-0.907928466796875
-0.61614990234375
1.135406494140625
0.48614501953125
-0.4140167236328125
Çıktı:
-0.4140167236328125
0.48614501953125
-0.61614990234375
-0.907928466796875
1.135406494140625
Açıkçası sayısal değere göre sıralanmamış.
Öyleyse, daha kesin bir cevabın kullanılacağını tahmin ediyorum, sort -n
ancak ancak tüm değerler pozitifse.
Not: sort -g
Bu örnek için kullanmak sadece aynı sonuçları döndürür
Düzenle:
Görünüşe göre yerel ayarlar, eksi işaretinin sıralamayı nasıl etkilediğini etkiliyor ( buraya bakın ). Doğru sonuçları almak için yaptım:
LC_ALL=C sort -n filename.txt
Sayısal sıralama seçeneğini kullanmalısınız:
sort -n -k 1,1 File.txt
sort -n
Veya kullanın sort --numeric-sort
.
Azalan düzende sıralamak için sort -nr kullanın. başvurmak
Daha fazla referans için yukarıdaki Man sayfasına bakın
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