注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

Wei Ding blog

 
 
 

日志

 
 

linux sort 多字段排序(转载)  

2017-10-09 20:43:14|  分类: linux |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
http://blog.chinaunix.net/uid-25504049-id-3075909.html
Linux多数发行版自带的sort程序,非常强大,在此只说多字段排序
sort 有个参数-k,可以指定字段,有比较复杂的语法,不在文本范围内。

一下为一段数据(从基因中得到,仅仅作为demo),文件名为 data

  1. chr13 3008566 3008677
  2. chr9 3024384 3024515
  3. chr19 3157071 3157172
  4. chr5 3236386 3236476
  5. chr13 3041044 3041191
  6. chr12 3045343 3045532
  7. chr6 3087308 3087625
  8. chr5 3109870 3110091
  9. chr9 3115454 3115531
字段中间以空格分开


现在想首先按照染色体进行排序,然后相同的染色体上的基因按起始位点进行排序,
那么这就是一个多字段的排序,而且第二个字段为数字,使用sort命令如下


  1. sort -t ' ' -k1,1 -k2n,2 data

其中 -t ' ' 指定使用空格分列
-k1,1  指定以第一列为关键字排序
-k2n,2 指定以第二列为关键字做数据排序

也可以使用

  1. sort +0 -1 +1n -2

效果是一样的。

排序结果

  1. chr12 3045343 3045532
  2. chr13 3008566 3008677
  3. chr13 3041044 3041191
  4. chr19 3157071 3157172
  5. chr5 3109870 3110091
  6. chr5 3236386 3236476
  7. chr6 3087308 3087625
  8. chr9 3024384 3024515
  9. chr9 3115454 3115531


http://www.dnzg.cn/Linux_BSD/201310_36942.html

  Sort命令高级用法:对多列进行排序

    sort命令选项:

    -r: 逆序排

    -u: 去除重复项

    -t: 指定分隔符

    -k: 指定排序列(,用来指明选定域的结束位置,默认到行尾)

    命令例子:

    cat bj_ppc.txt bj_ugc.txt | sort -u -t . -k 3n,3 -k 4n,4 > /home/vtc/AutoDeploy/ip/bj.txt

  评论这张
 
阅读(6)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017