- 論壇徽章:
- 0
|
保持第一列的scaffold的先后順序不變,第二列在同一條scaffold的情況,按數(shù)字大小排序。
Ph_scaffold57_2 6002125
Ph_scaffold57_2 1826520
Ph_scaffold4 54818110
Ph_scaffold4 53507591
Ph_scaffold4 51550443
Ph_scaffold4 15513112
Ph_scaffold243 767655
結(jié)果是:
Ph_scaffold57_2 1826520
Ph_scaffold57_2 6002125
Ph_scaffold4 15513112
Ph_scaffold4 51550443
Ph_scaffold4 53507591
Ph_scaffold4 54818110
Ph_scaffold243 767655
awk 'NR>1&&i!=$1{for(j=0;j++<asorti(a,b) print i,b[j];delete a}{i=$1;a[$2]}' file <(echo)
[解析]
一開始我以為是個蠻小的問題, sort應(yīng)該就可以解決, 不就是一個排序嘛. 后來發(fā)現(xiàn)sort無法在第一列相同且不改變先后順序的情況下針對第二列排序, sort要么連第一列都排序了, 這樣就打亂了原先的自然順序.
既然原先考慮的方法不行, 就只有用awk了, 思路是分別針對每個相同的第一列進(jìn)行排序, 目的是為了不改變其自然順序, 把相同第一列的第二列的值放入數(shù)組a中, 當(dāng)發(fā)現(xiàn)第一列不相同時(shí), 就排序輸出, 清空數(shù)組a.
------------------------------------------
剛剛看zooyo版主這個貼子的時(shí)候想到有沒有其他方法可以實(shí)現(xiàn)? |
|