Redhat Linux排序的奇怪行为

时间:2019-01-11 14:44:19

标签: linux sorting

Redhat linux,要排序的文件-“ aaa”:
4; AAA; 456
3; BBB; 567
2; AAA; 123
1; BBB; 234
5; AAA; 000

仅按第二个字段排序-命令:
排序-t“;” -k2,2 aaa

输出为:
2; AAA; 123
4; AAA; 456
5; AAA; 000
1; BBB; 234
3; BBB; 567

我认为输出应为:
4; AAA; 456
2; AAA; 123
5; AAA; 000
3; BBB; 567
1; BBB; 234

排序错误?

1 个答案:

答案 0 :(得分:2)

可能还有其他原因,但是我想这是您的“意见”,因为您认为对于具有相同键的记录,在文件中最先遇到的那个应该在输出中最先出现。

这被称为“ 稳定排序”。

稳定排序可能需要更多的工作,并且在大多数情况下不需要这样做,因此默认情况下sort命令不会执行此操作。因此,您看到的结果。

如果您愿意,它可以做到:

$ sort --stable --field-separator=";" --key="2,2" aaa
4;AAA;456
2;AAA;123
5;AAA;000
3;BBB;567
1;BBB;234