Sorting unix排序与数字和非数字混合不一致
我在对包含以下行的文件(badsort.small)排序时遇到问题:Sorting unix排序与数字和非数字混合不一致,sorting,unix,Sorting,Unix,我在对包含以下行的文件(badsort.small)排序时遇到问题: 0 foo 30 0 foo/bar 26 0 foo/bar 2b 0 foo/bar 30 0 foo/bar 73 0 foo/bar 91 0 foo/bar d3 以下排序给出了奇怪的结果: sort-nk1,1-k2,2-k3,3 badsort.small 0 foo/bar d3 0 foo/bar 2b 0 foo/bar 26 0 foo 30 0 foo/bar 30 0 foo/bar 73 0 fo
0 foo 30
0 foo/bar 26
0 foo/bar 2b
0 foo/bar 30
0 foo/bar 73
0 foo/bar 91
0 foo/bar d3
以下排序给出了奇怪的结果:
sort-nk1,1-k2,2-k3,3 badsort.small
0 foo/bar d3
0 foo/bar 2b
0 foo/bar 26
0 foo 30
0 foo/bar 30
0 foo/bar 73
0 foo/bar 91
这相当于sort-nk3,3。
这些命令正确排序:
- 排序-k1,1-k2,2-k3,3
- 排序-nk1,1-k2,3
- 排序-k2,2-k3,3
在linux 3.2.0-70-generic和osx 10.9.5上复制。该
-n
是一个整体程序选项,而不是任何键描述符的一部分,即使您以这样的方式将其与键描述符进行物理组合。如果只希望第一个键按数字排序,则
sort -k1,1n -k2,2 -k3,3
这实际上产生的顺序与输入的顺序相同。用于数字排序的选项不考虑十六进制表示,而是处理十六进制数字的字符串表示。正如John所提到的,您需要将“n”选项放在希望进行数字排序的字段上 如果要对十六进制字段进行数字排序:
预期的输出是什么?排序不会使用十六进制,并且您有“-n”作为所有字段的选项预期的输出与开始相同-但问题已在下面回答。+1关于sortThanks的“-n”方面的清晰解释-编造一些语法感觉很傻,但很高兴了解情况!