linux shell统计 fasta文件中每条染色体上的碱基数

 

001、

复制代码
root@DESKTOP-1N42TVH:/home/test5/test/test# ls
test.fa
root@DESKTOP-1N42TVH:/home/test5/test/test# cat test.fa   ## 测试fasta文件
>Chr1
ACCCTAAACCCTAAACCCTAAACCCTAAACCCTAAACCCTAACCCTAAAC
ACCCTAAACCCTAAACCCTAAACCCTAAACCCTAAACCCTAACCCTAAAC
>Chr2
ACCCTAAACCCTAAACCCTAAACCCTAAACCCTAAAC
>Chr3
CCCTAACCCTAAACCCTAAACCCTAAACCCTAAACCCTAAACCCTAAACC
CCCTAACCCTAAACCCTAAACCCTAAACCCTAAACCCTAAACCCTAAACC
CCC
>Chr4
CCCTAACCCTAAACCCTAAACCCTAAACCCTAAACCCTAAACCCTAAACC
CCCTAAC
root@DESKTOP-1N42TVH:/home/test5/test/test# grep ">" test.fa | paste - <(grep ">" test.fa | sed 1d | sed '$a >Chrend')
>Chr1   >Chr2                               ## 创建一个索引文件
>Chr2   >Chr3
>Chr3   >Chr4
>Chr4   >Chrend
root@DESKTOP-1N42TVH:/home/test5/test/test# grep ">" test.fa | paste - <(grep ">" test.fa | sed 1d | sed '$a >Chrend') > index.txt
root@DESKTOP-1N42TVH:/home/test5/test/test# ls
index.txt  test.fa
root@DESKTOP-1N42TVH:/home/test5/test/test# cat index.txt | while read {i,j}; do sed -n "/^$i$/,/^$j$/{/^$i$/b; /^$j$/b; p}" test.fa | awk -v a=$i '{sum += length($0)}END{print a, sum}' >> result.txt; done
root@DESKTOP-1N42TVH:/home/test5/test/test# ls          ## 利用循环进行统计
index.txt  result.txt  test.fa
root@DESKTOP-1N42TVH:/home/test5/test/test# cat result.txt   ## 查看结果
>Chr1 100
>Chr2 37
>Chr3 103
>Chr4 57
复制代码

 

posted @   小鲨鱼2018  阅读(98)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
历史上的今天:
2021-07-17 linux系统中如何删除^M
2021-07-17 linux系统中实现文件指定列的互换
2021-07-17 linux系统中awk命令删除指定列
2021-07-17 linux系统中如何将文件的某一列替换为其他文件的指定列
2021-07-17 linux系统中删除文件的第一列
点击右上角即可分享
微信分享提示