我需要帮助来了解GNU排序的默认算法。我以为它是按字典顺序排序的,但是我发现一些与之不符的行为,例如,使用以下字符串:

alex.
alex.a
alex.Z
alexa
alex0
alexZ
alex.~
alex
alex.|
alex.}
alex.abc

然后使用像echo 'stuff' | sort这样的排序对它们进行排序

这是我得到的结果:
alex
alex.
alex.~
alex.|
alex.}
alex0
alexa
alex.a
alex.abc
alexZ
alex.Z

而且我不知道为什么alex0alexa出现在alex.}alex.a之间

谁可以给我解释一下这个?

最佳答案

大致排序取决于LOCALE设置:

$ sort sort
alex
alex.
alex.~
alex.|
alex.}
alex0
alexa
alex.a
alex.abc
alexZ
alex.Z
$ LC_ALL=C sort sort
alex
alex.
alex.Z
alex.a
alex.abc
alex.|
alex.}
alex.~
alex0
alexZ
alexa

关于linux - GNU排序-用于比较的默认算法是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16513544/

10-12 14:14