gpt4 book ai didi

bash 排序异常顺序。空间问题?

转载 作者:行者123 更新时间:2023-11-29 08:56:48 25 4
gpt4 key购买 nike

很多时间都花在了一个 bug 上,这个 bug 可以追溯到排序...

当 bash 文档告诉我分隔符是从白色字符到非白色字符的过渡时,有人能解释为什么我得到这个未排序的结果吗?第一个字段不应该排序吗?

>sort myfile.txt
10_10000000 19
10_10000001 20
10_10000002 19
10_10000003 17
10_10000004 16
10_1000000 44
10_10000005 16
10_10000006 16
10_10000007 17
10_10000008 16

当然使用 +0 -1 给我预期的结果:

>sort +0 -1 myfile.txt
10_1000000 44
10_10000000 19
10_10000001 20
10_10000002 19
10_10000003 17
10_10000004 16
10_10000005 16
10_10000006 16
10_10000007 17
10_10000008 16

一些元信息:

>type sort
sort is hashed (/bin/sort)

我正在使用

sort (GNU coreutils) 5.97


>locale
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=

最佳答案

我认为您遇到了基于语言环境的问题。某些(许多?)语言环境会影响排序的工作方式,因为某些字符将被忽略。在这种情况下,当您未指定要排序的字段时,字段之间的空格似乎被忽略了。去掉空格,可以看到貌似放错地方的那一行是正确的。

如果您使用不同的区域设置运行排序,您可能会得到不同的结果:

$ LANG=C sort myfile.txt

我的默认语言环境是 en_AU.UTF-8,我看到了您的原始排序结果。当我设置 LANG=C 时,我看到了您期望的结果。

关于bash 排序异常顺序。空间问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4493175/

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