gpt4 book ai didi

bash - linux bash 'sort' 按字典顺序排列 - 零的问题

转载 作者:行者123 更新时间:2023-11-29 09:02:24 24 4
gpt4 key购买 nike

我在 RedHat Enterprise Linux 5 x86_64 和 Ubuntu 9.1 中看到“排序”有些奇怪。我正在使用 bash。

首先,这是我认为使用字典顺序进行排序的正确期望:

[stauffer@unix-m sortTrouble]$ cat st1
1230
123
100
11
10
1
123
1230
100

[stauffer@unix-m sortTrouble]$ sort st1
1
10
100
100
11
123
123
1230
第1230章

[stauffer@unix-m sortTrouble]$

现在这里是当有第二列时会发生什么(制表符分隔,尽管它在这里看起来很乱):

[stauffer@unix-m sortTrouble]$ cat st2
1230 1
123 1
100 1
11 1
10 1
1 1
123 1
1230 1
100 1

[stauffer@unix-m sortTrouble]$ sort st2
100 1
100 1
10 1
1 1
11 1
1230 1
1230 1
123 1
第 123 章

请注意第 1 列的排序顺序现在有何不同。 '11' 被正确地放在 '1' 之后,但 '10' 和 '100' 却没有。与“1230”类似。似乎零会带来麻烦。

这种行为是不一致的,并且在使用“join”时会导致问题,因为它需要字典排序。

在 Mac OSX 10.5 上,st2 文件在第一列中的排序类似于 st1。

我是不是遗漏了什么,或者这是一个错误?

谢谢,迈克尔

最佳答案

来自手册页

   -b, --ignore-leading-blanks
ignore leading blanks

-g, --general-numeric-sort
compare according to general numerical value

-n, --numeric-sort
compare according to string numerical value

例如:

andrey@localhost:~/gamess$ echo -e "1\n2\n10" | sort
1
10
2
andrey@localhost:~/gamess$ echo -e "1\n2\n10" | sort -g
1
2
10

关于bash - linux bash 'sort' 按字典顺序排列 - 零的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3107312/

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