GNU Coreutils sıralama bozuk mu?


11

Sıralamak için aşağıdaki girişi göz önünde bulundurun:

cat > foo <<EOM
D,,5014978
DD,,25
D,I,1972765530
D,Y,4223624
-,Y,71285059
YA,I,2
EOM

Şimdi koşmayı dene sort foo

Linux kutularımdan herhangi birinde (gnu coreutils sürüm 6.9-7.4) bunu denerken çıktı sıralanmıyor. Çıkış cygwin (gnu coretuils 8.5) altında çalıştırıldığında sıralanır. Yorumlar?

Yanıtlar:


19

Sıralama yerel ayara bağlıdır; özellikle, mevcut değilse geri düşmeye $LC_COLLATE(muhtemelen geçersiz kılınan $LC_ALL) bağlıdır $LANG. Komut locale, hangi değerlerle etkili bir şekilde çalıştığınızı gösterir. Bkz man 3 strcoll, man 3 setlocalevb

LC_COLLATE=C(veya POSIXhiç yerel ayar yok) katı bir bayt-byte karşılaştırması ile sonuçlanır.

LC_COLLATE=en_US.utf8 noktalama işaretleri göz ardı edildiğinde ve aynı eşdeğerlik sınıfındaki karakterler eşit olarak işlendiğinde alfabetik eşdeğerlikle sonuçlanır.


Gerçekten, export LC_COLLATE=Csıralama beklendiği gibi davranır
Leo Alekseyev

4
Aksanlar tamamen yok sayılmaz. Stephanesıralar önce Stéphane , ama Stephaniesıralar sonra Stéphane. éeşdeğerdir e(gibi ê, ë, ...), ama bir beraberliğin ardından arasındaki düzen de tanımlanır. Eski bir kâğıt sözlükte de aynı şey geçerli.
Stéphane Chazelas

1
: Gerçekten hepsini bilmek istiyorsanız unicode.org/reports/tr10
Martin Tournoij
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.