linux 中实现将fasta文件的碱基数目转换为指定的个数

 

001、每行输出为4个碱基

[root@pc1 test]# ls
test.fa
[root@pc1 test]# cat test.fa
>chr1
aatt
cctt
>chr2
ttgg
aacc
>chr3
TTCCGG
[root@pc1 test]# awk '{if($0 ~ /^>/) {print $0} else {printf("%s", $0)}}' test.fa | sed '2, $ s/>/\n>/' | sed '$ s/$/\n/' | awk -F "" '{if($0 ~ /^>/) {print $0} else {for(i = 1; i <= NF; i++){if(i % 4 == 0) {print $i} else {printf("%s", $i)}}if((i - 1) % 4 != 0){printf("\n")} }}'
>chr1
aatt
cctt
>chr2
ttgg
aacc
>chr3
TTCC
GG

 

 

002、每行输出为5个碱基

[root@pc1 test]# ls
test.fa
[root@pc1 test]# cat test.fa
>chr1
aatt
cctt
>chr2
ttgg
aacc
>chr3
TTCCGG
[root@pc1 test]# awk '{if($0 ~ /^>/) {print $0} else {printf("%s", $0)}}' test.fa | sed '2, $ s/>/\n>/' | sed '$ s/$/\n/' | awk -F "" '{if($0 ~ /^>/) {print $0} else {for(i = 1; i <= NF; i++){if(i % 5 == 0) {print $i} else {printf("%s", $i)}}if((i - 1) % 5 != 0){printf("\n")} }}'
>chr1
aattc
ctt
>chr2
ttgga
acc
>chr3
TTCCG
G

 

posted @ 2022-10-30 18:07  小鲨鱼2018  阅读(54)  评论(0编辑  收藏  举报