已有文件如下
我的需求是:
1.在同一個(gè)染色體上(第一列相同),如果第二列的第一行和第二行相同翼悴,那么就取第三列中數(shù)值最大的那一行輸出缚够;
2.在同一個(gè)染色體上(第一列相同),如果第三列的第一行和第二行相同抄瓦,那么就取第二列中數(shù)值最小的那一行輸出潮瓶;
文件背景:已經(jīng)按照第一列和第二列升序排序過(guò)
總之,我的目的是為了取到一個(gè)相鄰區(qū)域內(nèi)的最大區(qū)間
- 左思右想钙姊,想到一個(gè)辦法毯辅,如下面的代碼所示:
tac xpehh-fst.bed|awk '!i[$2]++'>1.tmp #降序,為了獲得我的需求1的文件煞额,因?yàn)槿绻舷聝尚邢嗤伎郑J(rèn)輸出第一行的數(shù)據(jù)沾谜,所以這里把第一行的第三列調(diào)整為最大的,即降序排列
tac 1.tmp|awk '!i[$3]++' >xpehh-fst.final.bed ##升序胀莹,為了獲得我的需求2的文件基跑,所以這里把第一行的第二列調(diào)整為最小的,即升序排列
最后得到的結(jié)果如下
文件已經(jīng)從2180行降到了893行描焰,整個(gè)命令運(yùn)行不到3秒媳否,大大節(jié)省了我的時(shí)間!
總結(jié)來(lái)說(shuō)荆秦,雖然沒(méi)用到高級(jí)語(yǔ)言篱竭,但是思考還是第一生產(chǎn)力。