为什么不对每台机器进行排序?
答
在OS X上的man-page说:
*******警告*******环境指定语言环境将影响排序顺序。设置LC_ALL = C以获得使用本地字节值的传统排序顺序 。
这可能会解释一些事情。
如果您的某些系统没有语言环境支持,他们将默认使用该语言环境(C),因此您不必将其设置为那些语言环境。如果您有一些支持语言环境并且想要相同的行为,请在这些系统上设置LC_ALL=C
。这就是我所知道的以同样的方式拥有尽可能多的系统的方法。
如果您没有任何无语言环境的系统,只要确保它们共享语言环境可能就足够了。
有关详细规范信息,请参阅单一UNIX®规范,版本2的locale,environment variables,setlocale()描述和sort(1)效用的描述。
答
这可能是区域差异的结果:
$ echo 'CO2_
CO_' | env LC_ALL=C sort
CO2_
CO_
$ echo 'CO2_
CO_' | env LC_ALL=en_US sort
CO_
CO2_
LC_ALL环境变量设置为相同的值应纠正问题。
答
这可能是由于locale environment variables的不同设置。 sort
将使用这些设置来确定如何比较字符串。通过在调用sort
之前以您想要的方式设置这些环境变量,您应该能够强制它以一种特定的方式运行。
答
想要知道更多关于sort
的更多信息,请阅读Single Unix Specification v3中的specification of sort
。它声明
应使用当前语言环境的排序顺序进行比较。
IOW,sort
排序依赖于脚本运行环境的语言环境(语言)设置。
如何设置语言环境为LC_ALL = C? – Malcolm 2012-02-07 17:23:51