簡體   English   中英

Bash排序有時會失敗

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM