我在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] $排序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] $排序st2
100 1
100 1
10 1
1 1
11 1
1230 1
1230 1
123 1
123 1

请注意,第1列的排序顺序现在有所不同。正确地将'11'放在'1'之后,但是将'10'和'100'放在正确的位置。对于“1230”也是如此。似乎零会引起麻烦。

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

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

我是否缺少某些东西,或者这是一个错误?

谢谢,
麦可

最佳答案

通过将键限制为您感兴趣的列,可以按照您想要的方式执行排序:

sort -k1,1 inputfile

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

10-10 02:49