Linux多数发行版自带的sort程序,非常强大,在此只说多字段排序
sort 有个参数-k,可以指定字段,有比较复杂的语法,不在文本范围内。
一下为一段数据(从基因中得到,仅仅作为demo),文件名为 data
- chr13 3008566 3008677
-
chr9 3024384 3024515
-
chr19 3157071 3157172
-
chr5 3236386 3236476
-
chr13 3041044 3041191
-
chr12 3045343 3045532
-
chr6 3087308 3087625
-
chr5 3109870 3110091
-
chr9 3115454 3115531
字段中间以空格分开
现在想首先按照染色体进行排序,然后相同的染色体上的基因按起始位点进行排序,
那么这就是一个多字段的排序,而且第二个字段为数字,使用sort命令如下
- sort -t ' ' -k1,1 -k2n,2 data
其中 -t ' ' 指定使用空格分列
-k1,1 指定以第一列为关键字排序
-k2n,2 指定以第二列为关键字做数据排序
也可以使用
效果是一样的。
排序结果
- chr12 3045343 3045532
-
chr13 3008566 3008677
-
chr13 3041044 3041191
-
chr19 3157071 3157172
-
chr5 3109870 3110091
-
chr5 3236386 3236476
-
chr6 3087308 3087625
-
chr9 3024384 3024515
-
chr9 3115454 3115531
阅读(21848) | 评论(3) | 转发(0) |