Jawaban:
Lihat halaman manual untuk mengurutkan ...
-n, --numeric-sort compare according to string numerical value
Jadi inilah contohnya ...
sort -n filename
-g, --general-numeric-sort
bisa lebih disarankan. Hal ini selanjutnya memungkinkan adanya notasi ilmiah misalnya 1.234E10 dll.
Jika Anda mengurutkan string yang merupakan teks & angka campuran, misalnya nama file log bergulir, maka pengurutan sort -n
tidak berfungsi seperti yang diharapkan:
$ 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
Dalam hal ini opsi -V
melakukan trik:
$ 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
dari halaman manual:
-V, --version-sort natural sort of (version) numbers within text
ls
melalui sed
substitusi untuk menghapus huruf dan hanya menyisakan angka, ternyata keluaran berwarna juga mempengaruhi banyak hal. Jadi, berlari ls --color=never
juga membuat perbedaan.
-V
persis seperti yang saya cari. Saya harus membiasakan untuk melihat-lihat halaman manual terlebih dahulu.
Nah, sebagian besar jawaban lain di sini mengacu pada
sort -n
Namun, saya tidak yakin ini berfungsi untuk angka negatif. Berikut hasil yang saya dapatkan dengan mengurutkan versi 6.10 di Fedora 9.
File masukan:
-0.907928466796875
-0.61614990234375
1.135406494140625
0.48614501953125
-0.4140167236328125
Keluaran:
-0.4140167236328125
0.48614501953125
-0.61614990234375
-0.907928466796875
1.135406494140625
Yang jelas tidak diurutkan berdasarkan nilai numerik.
Kemudian, saya kira jawaban yang lebih tepat akan digunakan sort -n
tetapi hanya jika semua nilainya positif.
PS: Menggunakan sort -g
mengembalikan hasil yang sama untuk contoh ini
Edit:
Sepertinya pengaturan lokal mempengaruhi bagaimana tanda minus mempengaruhi pesanan ( lihat di sini ). Untuk mendapatkan hasil yang tepat, saya baru saja melakukan:
LC_ALL=C sort -n filename.txt
Anda harus menggunakan opsi sortir numerik:
sort -n -k 1,1 File.txt
Gunakan sort -n
atau sort --numeric-sort
.
Gunakan sort -nr untuk mengurutkan dalam urutan menurun. Lihat
Lihat halaman Man di atas untuk referensi lebih lanjut
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