Alasannya adalah karena ketika menggunakan pengurutan numerik, string tanpa angka diperlakukan sebagai nol. GNU sort mendapatkan perilaku yang benar, tetapi tidak memberikan komentar mengapa. Halaman manual tentang illumos untuk jenis SunOS memang memberikan penjelasan:
-n
Membatasi kunci sortir ke string numerik awal, yang terdiri dari karakter kosong opsional, tanda minus opsional, dan nol atau lebih digit dengan karakter radix opsional dan ribuan pemisah (sebagaimana didefinisikan dalam lokal saat ini), yang diurutkan berdasarkan nilai aritmatika . String digit kosong diperlakukan sebagai nol. Angka nol di depan dan tanda pada angka nol tidak mempengaruhi pemesanan.
Perilaku ini juga ditentukan dalam SUSv4 dan POSIX.1-2008 ( http://pubs.opengroup.org/onlinepubs/9699919799/utilities/sort.html ), menggunakan verbiage yang sama dengan halaman manual illumos.
GNU sort juga memiliki -g
, "general numeric sort", yang mengurutkan berdasarkan angka floating point alih-alih bilangan bulat di mana string digit kosong diurutkan sebelum nol. Saya tidak yakin apakah ini efek samping atau disengaja. Namun, -g
datang dengan peringatan karena secara signifikan lebih lambat daripada -n
. Jika Anda menyortir kumpulan data besar atau melakukan apa pun yang ditunggu pengguna, Anda harus menghindari -g
.
LC_ALL=C
.