2008-08-26 69 views

回答

20

在OS X上的man-page說:

*******警告*******環境指定語言環境將影響排序順序。設置LC_ALL = C以獲得使用本地字節值的傳統排序順序 。

這可能會解釋一些事情。

如果您的某些系統沒有語言環境支持,他們將默認使用該語言環境(C),因此您不必將其設置爲那些語言環境。如果您有一些支持語言環境並且想要相同的行爲,請在這些系統上設置LC_ALL=C。這就是我所知道的以同樣的方式擁有儘可能多的系統的方法。

如果您沒有任何無語言環境的系統,只要確保它們共享語言環境可能就足夠了。

有關詳細規範信息,請參閱單一UNIX®規範,版本2的localeenvironment variablessetlocale()描述和sort(1)效用的描述。

+1

如何設置語言環境爲LC_ALL = C? – Malcolm 2012-02-07 17:23:51

3

這可能是區域差異的結果:

$ echo 'CO2_ 
CO_' | env LC_ALL=C sort 
CO2_ 
CO_ 


$ echo 'CO2_ 
CO_' | env LC_ALL=en_US sort 
CO_ 
CO2_ 

LC_ALL環境變量設置爲相同的值應糾正問題。

3

這可能是由於locale environment variables的不同設置。 sort將使用這些設置來確定如何比較字符串。通過在調用sort之前以您想要的方式設置這些環境變量,您應該能夠強制它以一種特定的方式運行。

2

想要知道更多關於sort的更多信息,請閱讀Single Unix Specification v3中的specification of sort。它聲明

應使用當前語言環境的排序順序進行比較。

IOW,sort排序依賴於腳本運行環境的語言環境(語言)設置。

相關問題