首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >按频率递减顺序排序

按频率递减顺序排序
EN

Stack Overflow用户
提问于 2021-03-28 07:48:39
回答 1查看 47关注 0票数 0

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

当我运行脚本时

代码语言:javascript
复制
cat test
aacgtttgtaaccagaactgt
./histogram test
3 aac 
1 gtt 
2 tgt 
1 cag 

相反,我希望能够做到

代码语言:javascript
复制
./histogram test
3 aac

2 tgt

1 cag

1 gtt

下面是我所做的

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-28 08:10:45

只需对输出进行排序。

代码语言:javascript
复制
./histogram test | sort -k1,1nr -k2,2

如果你想在你的脚本中包含sort,你可以把它附加在循环的done后面:

代码语言:javascript
复制
...
done | sort -k1,1nr -k2,2

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

对于./histogram test this should print的示例输出

代码语言:javascript
复制
3 aac
2 tgt
1 cag
1 gtt
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66837195

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档