gpt4 book ai didi

我不明白的linux排序顺序

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:52:02 25 4
gpt4 key购买 nike

我注意到以下排序输出。谁知道为什么是'.'第一次排在前面,第二次排在最后?

我试图调试一个在大型排序文件中查找行的程序,但罪魁祸首似乎是我对 linux 排序的期望/理解。

$ sort --debug
sort: using ‘en_US.UTF-8’ sorting rules
/mnt/x/E
/mnt/x/.
<ctrl-D>
/mnt/x/.
________
/mnt/x/E
________
$ sort --debug
sort: using ‘en_US.UTF-8’ sorting rules
/mnt/x/Ed
/mnt/x/.T
<ctrl-D>
/mnt/x/Ed
_________
/mnt/x/.T
_________
$

最佳答案

不是那个“.”出现在其他字符之前或之后——根本没有被检查;它纯粹基于字母字符进行排序。

在您的第一个示例中,<end-of-string>E 之前排序;在第二个例子中,ET 之前排序.

此行为取决于整理的区域设置。您可以使用环境变量来影响它,例如 LC_COLLATE :

$ env LC_COLLATE=C sort
/mnt/x/Ed
/mnt/x/.T
^D
/mnt/x/.T
/mnt/x/Ed
$ env LC_COLLATE=en_US.UTF-8 sort
/mnt/x/Ed
/mnt/x/.T
^D
/mnt/x/Ed
/mnt/x/.T
$

C下语言环境,考虑所有 ASCII 字符,并按其 ASCII 顺序排序;在许多其他语言环境中,标点符号被忽略 - 这大概是导致您所看到的行为的原因。

您可以使用 locale 检查您的区域设置命令。

关于我不明白的linux排序顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28874803/

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