Câu trả lời:
Hãy xem qua trang người đàn ông để biết ...
-n, --numeric-sort compare according to string numerical value
Vì vậy, đây là một ví dụ ...
sort -n filename
-g, --general-numeric-sort
có thể được khuyến khích hơn. Điều này tiếp tục cho phép ký hiệu khoa học ví dụ 1.234E10, vv
Nếu bạn đang sắp xếp các chuỗi là văn bản và số hỗn hợp, chẳng hạn như tên tệp của nhật ký cuộn thì sắp xếp với sort -n
không hoạt động như mong đợi:
$ 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
Trong trường hợp đó, tùy chọn -V
thực hiện mẹo:
$ 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
từ trang người đàn ông:
-V, --version-sort natural sort of (version) numbers within text
ls
thông qua sed
thay thế để loại bỏ các chữ cái và để lại chỉ số, rõ ràng đầu ra màu đã ảnh hưởng đến mọi thứ là tốt. Vì vậy, chạy ls --color=never
cũng tạo ra sự khác biệt.
-V
chính xác là những gì tôi đang tìm kiếm. Tôi nên tạo thói quen xem qua các trang nam trước.
Vâng, hầu hết các câu trả lời khác ở đây đề cập đến
sort -n
Tuy nhiên, tôi không chắc điều này có hiệu quả với các số âm. Đây là kết quả tôi nhận được với phiên bản sắp xếp 6.10 trên Fedora 9.
Tệp đầu vào:
-0.907928466796875
-0.61614990234375
1.135406494140625
0.48614501953125
-0.4140167236328125
Đầu ra:
-0.4140167236328125
0.48614501953125
-0.61614990234375
-0.907928466796875
1.135406494140625
Mà rõ ràng là không được sắp xếp theo giá trị số.
Sau đó, tôi đoán rằng một câu trả lời chính xác hơn sẽ được sử dụng sort -n
nhưng chỉ khi tất cả các giá trị đều dương.
Tái bút: Sử dụng sort -g
chỉ trả về kết quả tương tự cho ví dụ này
Biên tập:
Có vẻ như cài đặt ngôn ngữ ảnh hưởng đến cách dấu trừ ảnh hưởng đến thứ tự ( xem tại đây ). Để có được kết quả phù hợp, tôi đã làm:
LC_ALL=C sort -n filename.txt
Bạn phải sử dụng tùy chọn sắp xếp số:
sort -n -k 1,1 File.txt
Sử dụng sort -n
hoặc sort --numeric-sort
.
Sử dụng sort -nr để sắp xếp theo thứ tự giảm dần. Tham khảo
Tham khảo trang Man trên để tham khảo thêm
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