Sepertinya Anda menggunakan lokal non-POSIX.
Coba:
export LC_ALL=C
lalu sort
.
info sort
dengan jelas mengatakan:
(1) Jika Anda menggunakan lokal non-POSIX (misalnya, dengan menyetel `LC_ALL' ke`en_US'), maka `sort' dapat menghasilkan keluaran yang diurutkan secara berbeda dari biasanya. Dalam hal ini, setel variabel lingkungan `LC_ALL' ke `C'. Perhatikan bahwa menyetel `LC_COLLATE' saja memiliki dua masalah. Pertama, tidak efektif jika `LC_ALL' juga disetel. Kedua, ini memiliki perilaku yang tidak ditentukan jika `LC_CTYPE' (atau `LANG', jika `LC_CTYPE' tidak disetel) disetel ke nilai yang tidak kompatibel. Misalnya, Anda mendapatkan perilaku tidak terdefinisi jika `LC_CTYPE' adalah `ja_JP.PCK' tetapi `LC_COLLATE' adalah `en_US.UTF-8'.
Sebagai man sort
mengatakan, "urutan kamus" berarti "pertimbangkan hanya karakter kosong dan alfanumerik". Misalnya, mengingat data
The
!quick
brown
@fox
jumps
#over
17
$lazy
dogs
%42
times.
sort
tanpa hiasan perintah menghasilkan
dogs
!quick
#over
$lazy
%42
@fox
17
brown
jumps
The
times.
(menempatkan baris yang dimulai dengan karakter spasi dan !
, #
, $
, %
, dan @
simbol di depan baris yang dimulai dengan huruf dan angka; yaitu, karakter alfanumerik ), tetapi sort -d
menghasilkan
dogs
17
%42
brown
@fox
jumps
$lazy
#over
!quick
The
times.
dogs
tetap yang pertama, karena diawali dengan spasi, tetapi karakter khusus (tanda baca) diabaikan. 17
datang sebelum 42
, dan fox
berada di antara brown
dan jumps
, terlepas dari kenyataan bahwa 42
dan fox
memiliki karakter di depannya yang biasanya memindahkannya sebelum 17
.
____________
dalam urutan nilai ASCII:space=040, !
=041, #
=043, $
=044, %
=045, dan @
=0100. Perhatikan bahwa (dengan mengabaikan bilah spasi) urutannya kira-kira dari kiri ke kanan pada beberapa keyboard.
Untuk menentukan tata urutan, cukup buat file dengan karakter berbeda di setiap baris dan urutkan. Output yang dihasilkan akan memberi tahu Anda urutan penyortiran.