我使用排序文件
ABC AB-C ABCDEFG-HI
我得到了
ABC AB-C ABCDEFG-HI
为什么按这种方式对字符串进行排序?如何按字母顺序排序' - '?
答案 0 :(得分:5)
@cnicutar提供的解决方案是正确的,但原因需要解释,这就是我给出新答案的原因。
在与@cnicutar讨论之后,我最终怀疑coreutils中有一个错误'sort
我发现this sorting behavior is expected:
此时排序显示已损坏,因为案例已折叠且标点符号被忽略,因为'en_US.UTF-8'指定了此行为。
因此,对于sort
,您的输入似乎映射如下:
ABC -> ABC
AB-C -> ABC
ABCDEFG-HI -> ABCDEFGHI
如果您想要纯ASCII排序,则需要拨打LC_ALL=C sort
(在调用C
时暂时将语言环境设置为sort
,这意味着没有本地化的“标准”行为;您也可以使用POSIX
代替C
)。
在其他Unix上,这种行为似乎有所不同(在Mac OS X上测试哪些用户工具是从FreeBSD派生的),但LC_ALL=C sort
应该在所有POSIX系统中产生相同的行为。
答案 1 :(得分:3)
我记得这个:))试试
[cnicutar@aiur ~]$ LANG=POSIX sort
ABC
AB-C
ABCDEFG-HI
AB-C
ABC
ABCDEFG-HI
或者LANG=C
也可以。