sort

招RD和QA 2002-11-28 08:07:19
使用sort对数据进行排序,怎样指定多个排序码?

比如先以第1列排序,在此基础上以第4列排序等等。
...全文
135 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
snjsj 2002-12-25
  • 打赏
  • 举报
回复
如果照你所说的效果,wenlq(when) 的做法是对的,sort -karg1[,arg2]指的是从哪里开始排序,这种说法不准确,不过大概也就这意思。举例来说,你上面说的
bcd 9999
abd 1001
abd 1234
abd 3267
abd 5678
abcdef 1084
abcdef 1234
排序时,那么sort -k1,1指对第一字段进行处理。后面的r表示逆序。而-k2,2表示第二字段进行一般的sort排序。如果你将第二字段进行数字排序,那么用下面的命令:
sort -k1,1r -k2,2n
如果你将原文件的1084改为10840,那么
sort -k1,1r -k2,2
的结果为:
bcd 9999
abd 1001
abd 1234
abd 3267
abd 5678
abcdef 10840
abcdef 1234
而sort -k1,1r -k2,2n的结果为:
bcd 9999
abd 1001
abd 1234
abd 3267
abd 5678
abcdef 1234
abcdef 10840

招RD和QA 2002-12-25
  • 打赏
  • 举报
回复
请问 -k1,1r -k2,2是什么意思??能解释一下吗?
wenlq 2002-12-24
  • 打赏
  • 举报
回复
sort -k1,1r -k2,2 filename
招RD和QA 2002-12-24
  • 打赏
  • 举报
回复
没有人知道了吗??
招RD和QA 2002-12-20
  • 打赏
  • 举报
回复
abcdef 1234
abcdef 1084
abd 5678
abd 3267
abd 1234
abd 1001
bcd 9999

还是不大明白,以上面为例,怎样才能得出

bcd 9999
abd 1001
abd 1234
abd 3267
abd 5678
abcdef 1084
abcdef 1234

这个结果,即第一字段为主键逆序,第2字段为次键正序排列??
snjsj 2002-12-19
  • 打赏
  • 举报
回复
+是指从哪个字段开始算起而排序,而-就表示到哪个字段结束。
招RD和QA 2002-12-19
  • 打赏
  • 举报
回复
请问“+”和“-”各是什么意思
snjsj 2002-12-19
  • 打赏
  • 举报
回复
如果按数字排序,加-n参数;如果逆序,加-r参数。
snjsj 2002-12-19
  • 打赏
  • 举报
回复
还有我的经验就是如果你装了Linux,最好就是去试验了,写一些文件,再写一些shell程序去看结果,然后再看看相关的一些资料,这样进步很快。
snjsj 2002-12-19
  • 打赏
  • 举报
回复
你的列是指什么确切的含义?Linux下一般不说列,是说字段,然后在字段里面说第几个字符。如果按照字段的意义来说,
$sort +0 -1 filename|sort +3 -4
或者
$sort +0 -1 +3 -4 filename
都是可以的。
招RD和QA 2002-12-19
  • 打赏
  • 举报
回复
abcdef 1234
abcdef 1084
abd 5678
abd 3267
abd 1234
abd 1001
bcd 9999

以上面为例,首先以1列按串排序,在此基础上2列按数值逆序排列。

sort能做到这样吗?
snjsj 2002-12-05
  • 打赏
  • 举报
回复
我没太懂你的意思,不过可以试试下面的命令行:
$sort +0 -1 filename|sort +3 -4
或者
$sort +0 -1 +3 -4 filename
招RD和QA 2002-11-29
  • 打赏
  • 举报
回复
没有作用。
wenlq 2002-11-28
  • 打赏
  • 举报
回复
sort -k1 -k4 filename

看看这个效果 l| sort -k8nr -k5n

23,110

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧