$ xxd -p t.txt 2031310a3120300-6ren">
gpt4 book ai didi

linux - 排序命令中空格的处理。 LC_COLLATE=c 和 LC_COLLATE ="en_US.UTF-8"之间的区别

转载 作者:太空狗 更新时间:2023-10-29 11:14:14 33 4
gpt4 key购买 nike

我试图在 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 之间存在差异的原因是什么?

另见:

编辑:

有关此问题的更多信息可在此处找到:

最佳答案

在 en_US 语言环境中订购时忽略标点符号

注意排序可以使用 -b 选项显式跳过空格,但请注意这是使用技巧,所以我建议使用 sort --debug使用时的选项。

关于linux - 排序命令中空格的处理。 LC_COLLATE=c 和 LC_COLLATE ="en_US.UTF-8"之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23660247/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com