我希望能够以频率递减的顺序显示输出。如果两个或多个密码子具有相同的频率,脚本应该使用密码子的字母顺序打破平局。在本例中,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发布于 2021-03-28 08:10:45
只需对输出进行排序。
./histogram test | sort -k1,1nr -k2,2如果你想在你的脚本中包含sort,你可以把它附加在循环的done后面:
...
done | sort -k1,1nr -k2,2顺便说一句:sort | wc -l是浪费时间,因为sort不会改变行数。只需使用wc -l即可。
对于./histogram test this should print的示例输出
3 aac
2 tgt
1 cag
1 gtthttps://stackoverflow.com/questions/66837195
复制相似问题