Linux 中 shell脚本统计fasta文件中每一条染色体的长度
001、 借助数组实现
a、无序输出
[root@pc1 test]# ls a.fa [root@pc1 test]# cat a.fa ## 测试fasta文件 >chr1 aattccgg ttcc >chr2 ttccc >chr3 tttc cct ## 统计脚本 [root@pc1 test]# awk '{if($0 ~ /^>/) {tmp=$0; ay[tmp] = 0} else {ay[tmp] += length($0)}}END {for (i in ay) print i, ay[i]}' a.fa >chr3 7 >chr1 12 >chr2 5
b、有序输出
[root@pc1 test]# ls a.fa [root@pc1 test]# cat a.fa ## 测试fasta >chr1 aattccgg ttcc >chr2 ttccc >chr3 tttc cct ## 统计程序 [root@pc1 test]# awk 'BEGIN{idx=0}{if($0 ~ /^>/) {idx++; ay1[idx]=$0; ay2[ay1[idx]] = 0} else {ay2[ay1[idx]] += length($0)}} END {for (i = 1; i <= idx; i++) { print ay1[i], ay2[ay1[i]]}}' a.fa >chr1 12 >chr2 5 >chr3 7
002、awk实现
[root@pc1 test]# ls a.fa [root@pc1 test]# cat a.fa ## 测试fasta文件 >chr1 aattccgg ttcc >chr2 ttccc >chr3 tttc cct ## awk实现 [root@pc1 test]# awk '{if(NR == 1) {printf("%s ", $0); sum = 0}; if(NR > 1 && $0 !~ /^>/) {sum += length($0)}; if(NR > 1 && $0 ~ /^>/) {print sum; sum = 0; printf("%s ", $0)}}END {print sum}' a.fa >chr1 12 >chr2 5 >chr3 7
。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
2021-11-17 R语言中如何清除向量中的NA、返回非NA的索引、返回指定项的索引