[英]Bash sorting fails sometimes
這是問題所在:
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”-form值才會出現錯誤。 排序選項“-g”也有同樣奇怪的結果。
有沒有人知道為什么會這樣做,以及如何糾正排序......?
如果使用GNU排序,則需要使用-g
而不是-n
來對浮點值進行排序。 -n
僅適用於整數。
最有可能的問題是,您的語言環境未設置為C
語言環境。 許多區域設置會干擾數字排序,特別是浮點數(某些區域設置希望將逗號視為小數分隔符)。 嘗試這個:
LC_COLLATE= sort -g
如果您使用的是其他類型,則需要閱讀其文檔。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.