我试图在sort命令的手册页中查找这一点,但什么也找不到。因此,请考虑以下文本文件t.txt
11
1 0( t.txt的二进制表示)
$ xxd -p t.txt
2031310a3120300a)
在此文件上使用LC_COLLATE="en_US.UTF-8"与sort一起提供:
$ LC_COLLATE="en_US.UTF-8" sort t.txt
1 0
11如果我们检查文件中的第二个字符位置(或列),就会发现第一行有一个空格,第二行有一个1。由于空间具有0x20的十六进制值(小于1的十六进制值(即0x31) ),所以我假设这种排序会提供:
11
1 0 结果表明,使用LC_COLLATE=c可以获得期望的排序顺序。
$ LC_COLLATE=c sort t.txt
11
1 0在这种情况下,LC_COLLATE="en_US.UTF-8"和LC_COLLATE=c的区别是什么原因?
另请参阅:
编辑:
有关这一问题的更多信息可在这里找到:
发布于 2014-05-18 17:11:07
在en_US区域设置中排序时忽略标点符号
注意,排序可以使用-b选项显式跳过空格,但请注意这是要使用的技巧,因此我建议在使用该选项时使用排序-调试选项。
https://stackoverflow.com/questions/23660247
复制相似问题