- 论坛徽章:
- 1
|
回复 13# xiaopan3322
问题可能比较纠结,我又重新翻了几次贴子,发现还是有问题
# sort -k 2 example.txt
g 110 d 5000
g 50 c 3000
b d a 5000
a d b 6500
默认没有加-n参数时,第2列相同时会再以第3列到第n列排序
而且测试发现当将 a d b 6500 这1行的第3列更改成小于a的ASCII字符时,这1行会排到 b d a 5000 这1行上面
可以得知这种情况下 sort -k 2 等于 sort -k 2,n
# sort -n -k 2 example.txt
a d b 6500
b d a 5000
g 50 c 3000
g 110 d 5000
加上-n参数之后,排序顺序会发生变化,a d b 6500 这1行会排到 b d a 5000 这1行上面
再次测试发现当将 b d a 5000 这1行的第1列更改成小于a的ASCII字符时,这1行会排到 b d a 5000 这1行上面
可以得知这种情况下 sort -k 2 等于 sort -k 2,2
“当你在第一个k指定域后,后面的那个列的域就不起作用了”,也就是说当指定-n参数之后,你说的这句话就是成立的
那么,在你提供的帖子中 ywlscpl 所说的:总列数为n列时,sort -k2 等价于 sort -k2,n关键对-k2,n的理解,应该是“从第2列起到第n列止的字符串” 这个观点也就只有在比较字符串的时候才有用?
那结论就是进行字符串比较时 sort -k 2 等于 sort -k 2,n 进行数值比较时 sort -k 2 等于 sort -k 2 ,2
不知道我理解得对不对,如果是正确的,不知道这个是这个程序的Bug还是特意设计的,目地又是什么呢?
我看到之前那个帖子里面,黑哥也同样的疑问,不知道现在能否发现一下观点? :wink: |
|