2010-12-20 11 views
6

Zamanla geriye doğru giden bir hatayı gidermek için ...bash sıra dışı sıralama. Boşluklarla ilgili sorun mu var?

Başhekim dokümanlar bana sınırlayıcının beyazdan beyaz olmayana geçişi olduğunda, neden bu sıralanmamış sonucu aldığımı açıklayabilir mi? karakterler? İlk alan sıralanmamalı mı? +0 kullanarak tabii

>sort myfile.txt 
10_10000000 19 
10_10000001 20 
10_10000002 19 
10_10000003 17 
10_10000004 16 
10_1000000 44 
10_10000005 16 
10_10000006 16 
10_10000007 17 
10_10000008 16 

-1 bana beklenen sonuçları verir:

>sort +0 -1 myfile.txt 
10_1000000 44 
10_10000000 19 
10_10000001 20 
10_10000002 19 
10_10000003 17 
10_10000004 16 
10_10000005 16 
10_10000006 16 
10_10000007 17 
10_10000008 16 

Bazı metainfo:

>type sort 
sort is hashed (/bin/sort) 

Ben

sort (GNU coreutils) 5.97 


>locale 
LANG=en_US.UTF-8 
LC_CTYPE="en_US.UTF-8" 
LC_NUMERIC="en_US.UTF-8" 
LC_TIME="en_US.UTF-8" 
LC_COLLATE="en_US.UTF-8" 
LC_MONETARY="en_US.UTF-8" 
LC_MESSAGES="en_US.UTF-8" 
LC_PAPER="en_US.UTF-8" 
LC_NAME="en_US.UTF-8" 
LC_ADDRESS="en_US.UTF-8" 
LC_TELEPHONE="en_US.UTF-8" 
LC_MEASUREMENT="en_US.UTF-8" 
LC_IDENTIFICATION="en_US.UTF-8" 
LC_ALL= 
+1

Hangi tür 'sort' kullanıyorsunuz? Hangi işletim sisteminde? Tür sıralama 'çıktı nedir? –

+0

Ayrıca, 'yerel ayar' çıktı nedir? – ephemient

+0

Bash sıralama hakkında bir şey bilmiyor - 'sort' harici bir yardımcı programdır. '>' Bash için sıradışı bir istektir. –

cevap

2

İşleri hakkı için kullanıyorum bana:

$ sort myfile.txt 
10_1000000 44 
10_10000000 19 
10_10000001 20 
10_10000002 19 
10_10000003 17 
10_10000004 16 
10_10000005 16 
10_10000006 16 
10_10000007 17 
10_10000008 16 

$ sort --version 
sort (GNU coreutils) 8.5 

Belki versiyonu sayısal-tür açmak için -n bayrağı gerektirir?

9

Sana yerel bazlı sorunları görüyoruz düşünüyorum. Bazı (çok?) Yereller, sıralama tarzının etkilerini etkiler, çünkü bazı karakterler göz ardı edilir. Bu durumda, sıralanacak alanları belirtmediğinizde alanlar arasındaki boşluk göz ardı edilir gibi görünüyor. Alanı kaldırın ve yanlış yere benzeyen satırın doğru olduğunu görebilirsiniz. Farklı bir yerel ayar ile sıralama çalıştırırsanız

muhtemelen farklı bir sonuç elde edersiniz:

$ LANG=C sort myfile.txt 

Benim varsayılan yerel en_AU.UTF-8 ve ben orijinal sıralama sonuçlarını görebilirsiniz. LANG = C'yi ayarladığımda, beklediğiniz sonuçları görüyorum.

+0

'LANG = C' yerine' LC_ALL = C' kullanmak zorunda kaldım. – Mark