2013-10-23 71 views
1

這裏的問題是:猛砸排序失敗有時

echo -e " 1.0101010101010102 Ok \n 
    1.00 Ok \n 
    1.010204081632653 Ok \n 
    1.010752688172043 Ok \n 
    1.0 FAIL \n 
    1.010989010989011 Ok" 
| sort -n 

回報

1.00 Ok 
1.0101010101010102 Ok 
1.010204081632653 Ok 
1.010752688172043 Ok 
1.010989010989011 Ok 
1.0 FAIL 

顯然,錯誤只發生與 「I.0」 構型中值。它也具有與排序選項「-g」相同的奇怪結果。

有沒有人有任何線索爲什麼這樣做,以及如何糾正排序......?

+2

適合我。 'sort(GNU coreutils)8.13' – devnull

+0

適合我。 'sort(GNU coreutils)5.93' – Kevin

+0

@ChristianG。你可以嘗試'sort -sn'嗎? – anubhava

回答

4

如果您使用的是GNU排序,則需要使用-g而不是-n對浮點值進行排序。 -n僅適用於整數。

很可能,您的問題在於您的區域設置未設置爲C區域設置。許多語言環境設置會干擾數字排序,尤其是浮點數(某些語言環境希望將逗號看作小數點分隔符)。試試這個:

LC_COLLATE= sort -g 

如果你使用不同的排序,你需要閱讀它的文檔。

+0

謝謝,它終於與「LC_COLLATE = C」一起工作,即使使用選項-n。 –