Untuk waktu yang lama saya pikir perilaku default sort
program menggunakan urutan ASCII. Namun, ketika saya memasukkan baris berikut ke dalam sort
tanpa argumen:
#
@
Saya mendapatkan:
@
#
Tetapi menurut tabel ASCII, #
adalah 35 dan @
64. Contoh lain adalah:
A
a
Dan hasilnya adalah:
a
A
Adakah yang bisa menjelaskan ini? Ngomong-ngomong, apa 'urutan kamus' saat menggunakan sort -d
?
Jawaban:
Sepertinya Anda menggunakan lokal non-POSIX.
Mencoba:
dan kemudian
sort
.info sort
dengan jelas mengatakan:sumber
Untuk menentukan urutan sortir, cukup buat file dengan karakter berbeda di setiap baris dan sortirlah. Output yang dihasilkan akan memberi tahu Anda urutan pengurutan.
sumber
Seperti yang
man sort
dikatakan, "urutan kamus" berarti "hanya mempertimbangkan karakter kosong dan alfanumerik". Misalnya diberi datasort
perintah tanpa hiasan menghasilkan(menempatkan garis yang dimulai dengan karakter ruang dan
!
,#
,$
,%
, dan@
simbol-simbol 1 menjelang garis yang dimulai dengan huruf dan angka, yaitu, karakter alfanumerik ), tetapisort -d
menghasilkandogs
masih pertama, karena dimulai dengan spasi, tetapi karakter khusus (tanda baca) diabaikan.17
datang sebelum42
, danfox
datang antarabrown
danjumps
, terlepas dari kenyataan itu42
danfox
memiliki karakter di depan mereka yang biasanya akan memindahkan mereka sebelum17
.____________
1 menurut nilai ASCII mereka: space = 040,
!
= 041,#
= 043,$
= 044,%
= 045, dan@
= 0100. Perhatikan bahwa (mengabaikan bilah spasi) ini adalah urutan kiri-ke-kanan pada beberapa keyboard.sumber
sort
harus berbeda dalam banyak Distribusi.