linux 中 shell 将fasta文件依据scafold 拆分为单独的文件

 

001、

复制代码
(base) root@PC1:/home/test2# ls
a.fasta
(base) root@PC1:/home/test2# sed '$a tag_tag' a.fasta -i       ## 在fasta末尾添加一个标记tag_tag
(base) root@PC1:/home/test2# cat a.fasta                       ## fasta文件
>scaffold_1
CCCGGGTAAAACGGGTCTTCAAGAAAACGCTCCTCCGTTAATGCCGGCCGATTCAAATAA
CCTCTGGCAACACCCGCTCCGGCAATGTATAGTTCACCGATACATCCAACAGGCAGCATC
CGCTGATTCTGATTCAGGATATACAATCTGACATGATGAACAGGTTTTCCAATTGGAATC
CGTTCAAGTTTTTCTTGCGGCGGACAATCAAAGAATGCAGCTTCTACGGTTGCTTCCGTT
GGCCCATAGGAATTGGTTATTGAAACATTTGGAAGCAACACGTGAAATCGGGAGACAAGA
>scaffold_2
CACGCCGCCAGCGTTCGTCCTGAGCCAGGATCAAACTCTCCGATAAATGGATCACAGGTT
AAGTTCACCGCATCCTGCGGCGACACCTGTGTGGCCTGCGTCGTGCAGGCCCTAGTTTGA
CTGACTACGCACATCGCTGTGCGATTTATAAAAATGAATTAACAGGTACGTTTTGTCTTG
TTTAGTTTTCAAAGAACTTTGCGTGCTTCTCTCGAAGCGACTACTTAATAGTAACATTTT
TAGTTAACTAGGTCAATACTTTTTTGAAAAAGTTTTTACTAGTCATAATGGTCATGTTTG
>scaffold_3
TTGATCCAGTGGCTCCGGTTACTCCAGTTGATCCTGTTGCGCCTGTTGCTCCAGTTTCTC
CGGTTGGTCCGGTTGATCCGGTTGCACCTGTTACTCCAGTGGCTCCGGTTACTCCCGTCG
CACCAGTTTCTCCTGTCGCACCAGTTGATCCTGTTGCGCCTGTTGGTCCTGTATCTCCAG
TTGCACCAGTTACTCCCGTTACTCCTGTTGGACCGGTTGCGCCTGTTACTCCGGTTGCGC
CTGTTGCTCCTGTTGCTCCTGTTGATCCCGTTGCACCTGTTGGTCCAGTCGGTCCAATTC
>scaffold_4
CCTGAGCCAGGATCAAACTCTCCGATAAATGGATCACAGGTTAAGTTCACCGCATCCTGC
GGCGACACCTGTGTGACCTGCGTCGTGCAGGCCCTAGTTTGACTGACTACGCACATCGCT
GTGCGATTTTTAAAAACTGAATTAACAGGTACGTTTTGTCTTGTTTAGTTTTCAAAGATC
ATTTTCGCTTCTTGTTGAAGCGACTTTATTAATATAACATTTTGACTTTCTTTTGTCAAA
TGTTTTTTTGATTTATTTTCCCGCCGCTGTGAGCTTGTTTTCTCAGAAGCGCATCAGCGA
>scaffold_5
TCACCCCGGAATCAGCTGACATAGAAGCACTGAAATCAGCACTGAAGGAAACCCTGCCGG
tag_tag                                                            ## 拆分脚本
(base) root@PC1:/home/test2# grep ">" a.fasta | paste - <(grep ">" a.fasta | sed -n '2, $p' | sed '$a tag_tag') | awk '{split($1,a, ">"); print a[2], $0}' | while read {i,j,k}; do sed -n "/$j/,/$k/{/$k/b; p}" a.fasta > $i; done
(base) root@PC1:/home/test2# ls
a.fasta  scaffold_1  scaffold_2  scaffold_3  scaffold_4  scaffold_5
(base) root@PC1:/home/test2# cat scaffold_1                         ## 查看运行结果
>scaffold_1
CCCGGGTAAAACGGGTCTTCAAGAAAACGCTCCTCCGTTAATGCCGGCCGATTCAAATAA
CCTCTGGCAACACCCGCTCCGGCAATGTATAGTTCACCGATACATCCAACAGGCAGCATC
CGCTGATTCTGATTCAGGATATACAATCTGACATGATGAACAGGTTTTCCAATTGGAATC
CGTTCAAGTTTTTCTTGCGGCGGACAATCAAAGAATGCAGCTTCTACGGTTGCTTCCGTT
GGCCCATAGGAATTGGTTATTGAAACATTTGGAAGCAACACGTGAAATCGGGAGACAAGA
(base) root@PC1:/home/test2# cat scaffold_5
>scaffold_5
TCACCCCGGAATCAGCTGACATAGAAGCACTGAAATCAGCACTGAAGGAAACCCTGCCGG
复制代码

 

posted @   小鲨鱼2018  阅读(95)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
历史上的今天:
2021-08-10 c语言中指数增长程序
点击右上角即可分享
微信分享提示