浏览 2656 次
锁定老帖子 主题:sort -k选项的注意事项
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2010-10-12
举个例子,以下内容保存为fruit: apple 4 apple 5 第一个字段为水果名称,第二个字段为价格。我的需求是,首先对水果名称进行排序,然后再根据价格进行降序。我的第一反应是: cat fruit|sort -k1 -k2nr结果是什么?居然还是: apple 4 apple 5 正确的命令应该是: cat fruit|sort -k1,1 -k2nr这样的结果才正确: apple 5 apple 4 查看sort -k说明: -k POS1[,POS2] --key=POS1[,POS2] Specify a sort field that consists of the part of the line between POS1 and POS2 (or the end of the line, if POS2 is omitted)意思是如果省略了POS2,那么排序字段的end就会设定为行尾。太奇怪的规则了,这样很容易让人误用。 回到刚才的例子,使用awk -k1的后果是,第一个排序字段的内容延长到行尾,包括了价格,使得-k2nr的作用完全失效。 初次使用sort要注意这个潜规则,很无语。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2010-10-12
思考方式的不同罢了,了解越多,你会见识越多。
|
|
返回顶楼 | |
发表时间:2010-10-13
Magicloud 写道 思考方式的不同罢了,了解越多,你会见识越多。
我觉得这样的规则很容易让新手误用,而且还很难找到是什么原因造成的。 |
|
返回顶楼 | |