按频率降序排列

穆加伯

我希望能够按频率递减的顺序显示输出。如果两个或多个密码子具有相同的频率,则脚本应使用密码子的字母顺序打破平局。在这个例子中,cag 和gtt 都只出现一次,但是因为c 在g 之前,所以cag 出现在gtt 之前。

当我运行我的脚本时

cat test
aacgtttgtaaccagaactgt
./histogram test
3 aac 
1 gtt 
2 tgt 
1 cag 

但相反,我希望能够做到

./histogram test
3 aac

2 tgt

1 cag

1 gtt

这是我所做的

declare -a codons=(aac gtt tgt cag)

for items in  ${codons[@]}
do

        count=$( grep -o $items $1  | sort  -k1,1nr -k2,2 | wc -l)

     # count=$( grep -o $items $1 | uniq -c | wc -l | sort  -k1,1nr -k2,2  )
        echo "$count $items "
done
索科维

只需对输出进行排序。

./histogram test | sort -k1,1nr -k2,2

如果您想将 包含sort到您的脚本中,您可以在done循环之后附加它

...
done | sort -k1,1nr -k2,2

顺便说一句:sort | wc -l是浪费时间,因为sort不会改变行数。只需使用wc -l.

对于您的示例输出,./histogram test 应该打印

3 aac
2 tgt
1 cag
1 gtt

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章