Saya tidak tahu ada lokal yang secara default mengurutkan dalam urutan itu. Solusinya adalah membuat lokal kustom dengan urutan pengurutan yang disesuaikan. Jika ada orang, empat tahun kemudian, yang ingin memilah-milah pakaian adat, inilah triknya.
Sebagian besar lokal tidak menentukan urutan pengurutannya sendiri, melainkan menyalin urutan pengurutan yang ditentukan /usr/share/i18n/locales/iso14651_t1_common
sehingga Anda ingin mengeditnya. Daripada mengubah urutan pengurutan untuk hampir setiap lokal dengan memodifikasi yang asli iso14651_t1_common
, saya sarankan Anda membuat salinan. Detail tentang cara kerja pengurutan dan cara membuat lokal kustom di $HOME
direktori Anda tanpa akses root ditemukan dalam jawaban untuk pertanyaan serupa .
Lihatlah bagaimana a
dan A
dipesan berdasarkan entri mereka di iso14651_t1_common
:
<U0061> <a>;<BAS>;<MIN>;IGNORE # 198 a
<U0041> <a>;<BAS>;<CAP>;IGNORE # 517 A
b
dan B
serupa:
<U0062> <b>;<BAS>;<MIN>;IGNORE # 233 b
<U0042> <b>;<BAS>;<CAP>;IGNORE # 550 B
Kita melihat bahwa pada lintasan pertama, keduanya a
dan A
memiliki simbol susun <a>
, sedangkan keduanya b
dan B
memiliki simbol susun <b>
. Sejak <a>
muncul sebelum <b>
masuk iso14651_t1_common
, a
dan A
diikat sebelumnya b
dan B
. Lewat kedua tidak memutuskan ikatan karena keempat karakter memiliki simbol susun <BAS>
, tetapi pada lintasan ketiga ikatan tersebut diselesaikan karena simbol susun untuk huruf kecil <MIN>
muncul pada baris 3467, sebelum simbol susun untuk huruf besar <CAP>
(baris 3488) . Jadi urutan berakhir sebagai a
, A
, b
, B
.
Mengganti simbol-simbol penyusun pertama dan ketiga akan mengurutkan huruf-huruf pertama dengan huruf besar-kecil (lebih rendah dari atas), kemudian dengan aksen ( <BAS>
berarti tidak beraksen), kemudian dengan urutan abjad. Namun , keduanya <MIN>
dan <CAP>
sebelum digit angka, jadi ini akan memiliki efek yang tidak diinginkan dari menempatkan digit setelah huruf.
Cara termudah untuk menjaga digit lebih dulu sementara membuat semua huruf kecil datang sebelum semua huruf besar adalah dengan memaksa semua huruf untuk mengikat selama perbandingan pertama dengan mengatur mereka semua sama <a>
. Untuk memastikan bahwa mereka mengurutkan menurut abjad dalam kasus, mengubah simbol susun terakhir dari IGNORE
ke simbol susun pertama saat ini. Mengikuti pola ini, a
akan menjadi:
<U0061> <a>;<BAS>;<MIN>;<a> # 198 a
A
akan menjadi:
<U0041> <a>;<BAS>;<CAP>;<a> # 517 A
b
akan menjadi:
<U0062> <a>;<BAS>;<MIN>;<b> # 233 b
B
akan menjadi:
<U0042> <a>;<BAS>;<CAP>;<b> # 550 B
dan seterusnya untuk surat-surat lainnya.
Setelah Anda membuat versi khusus iso14651_t1_common
, ikuti instruksi dalam jawaban yang tertaut di atas untuk mengkompilasi lokal kustom Anda.
sort
, tetapi dengan titik koma variabel lokal ke shell dan tidak mempengaruhi perilakusort
. Tanda titik koma dapat disimpan seolah-olah variabel juga diekspor, tetapi itu akan mempengaruhi perintah lain juga.