为什么不在每台机器上进行**排序**排序?

Jon*_*son 12 unix sorting bash ksh

使用具有相同输入的相同排序命令会在不同的计算机上生成不同的结果.我该如何解决这个问题?

Hen*_*son 20

OS X上的手册页说:

*******警告*******环境指定的语言环境会影响排序顺序.设置LC_ALL = C以获取使用本机字节值的传统排序顺序.

这可能解释了一些事情

如果您的某些系统没有语言环境支持,它们将默认使用该语言环境(C),因此您不必在其上设置它.如果您有一些支持区域设置并希望具有相同的行为,请LC_ALL=C在这些系统上进行设置.这就是让我知道的系统以同样的方式做到这一点的方法.

如果您没有任何无语言环境的系统,只需确保它们共享语言环境就足够了.

有关更多规范信息,请参阅单一UNIX®规范,版本2对语言环境的描述,环境变量,setlocale()以及sort(1)实用程序的说明.


Jon*_*son 5

这可能是区域设置差异的结果:

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


$ echo 'CO2_
CO_' | env LC_ALL=en_US sort
CO_
CO2_
Run Code Online (Sandbox Code Playgroud)

将 LC_ALL 环境变量设置为相同的值应该可以解决该问题。