linux sort 多欄位排序

2021-07-11 07:53:30 字數 937 閱讀 7587

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 指定以第二列為關鍵字做資料排序

也可以使用

sort +0 -1 +1n -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

C vector多欄位排序

c 當中vector的資料型別是基本型別時,我們利用std sort很容易排序,當我們的型別是自定義的結構體,並且我們還要實現按多字段排序,我有兩種方法 1.我們通過過載operator方法來實現 本例子實現了struct中多個字段排序 cpp view plain copy include inc...

轉 多欄位排序

多欄位排序的問題其實很簡單,只要實現乙個自己的comparator就可以。例如我有乙個類 class student 然後我有乙個arraylist,新增了三個學生進去 public static void main string args 我的排序規則是,先按名字牌,如果名字一樣的,按照id來排,...

Mysql order by 多欄位排序

降序desc 由大到小 公升序asc 由小到大 mysql單個字段降序排序 select from table order by id desc mysql單個字段公升序排序 select from table order by id asc mysql多個字段排序 select from tabl...