Lý do là vì khi sử dụng sắp xếp số, các chuỗi không có số được coi là 0. GNU sort có hành vi đúng, nhưng không bình luận tại sao. Trang người đàn ông trên illumos cho SunOS sort cung cấp một lời giải thích:
-n
Hạn chế khóa sắp xếp thành một chuỗi số ban đầu, bao gồm các ký tự trống tùy chọn, dấu trừ tùy chọn và 0 hoặc nhiều chữ số với ký tự cơ số tùy chọn và hàng nghìn dấu phân cách (như được định nghĩa trong ngôn ngữ hiện tại), được sắp xếp theo giá trị số học . Một chuỗi chữ số trống được coi là số không. Số không và dấu hiệu hàng đầu trên số không không ảnh hưởng đến thứ tự.
Hành vi này cũng được chỉ định trong SUSv4 và POSIX.1-2008 ( http://pub.opengroup.org/onlinepub/9699919799/utilities/sort.html ), sử dụng cùng một verbiage như trang man illumos.
GNU sort cũng có -g
"sắp xếp số chung", sắp xếp theo số dấu phẩy động thay vì số nguyên trong đó các chuỗi chữ số trống được sắp xếp trước 0. Tôi không chắc đây là tác dụng phụ hay cố ý. Tuy nhiên, -g
đi kèm với một cảnh báo vì nó chậm hơn đáng kể so với -n
. Nếu bạn sắp xếp một tập dữ liệu lớn hoặc làm bất cứ điều gì mà người dùng đang chờ đợi, bạn nên tránh -g
.
LC_ALL=C
.