将一个大字符串拆分为子字符串

cuc*_*bit 0 string bash awk

我有这个文件:

>first
GTGAAGTGCGGCACCCCGTAGGTCAGACAAGGCGGTCACGCCGCATCCGACATCCAACGCCCGAGCCGGTAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACC
>second
CGGTAAT
Run Code Online (Sandbox Code Playgroud)

我的预期输出是这样的:

>first
GTGAAGTGCGGCACCCCGTAGGTCAGACAAGGCGGTCACGCCGCATCCGACATCCAACGC
CCCGAGCCGGTAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAACC
>second
CGGTAAT
Run Code Online (Sandbox Code Playgroud)

说明:如果(行以'>'开头)打印​​; 否则,如果字符串的长度大于60,则将字符串拆分为60的子字符串.

我的想法在awk中是这样的,但也欢迎bash解决方案:

gawk '/^>/ {print;next;} {len=length; if(len>60){DO SOMETHING HERE (LOOP?)} else {print}}'
Run Code Online (Sandbox Code Playgroud)

任何帮助将非常感谢!谢谢

anu*_*ava 5

您可以fold在BASH循环中使用内置实用程序:

while read -r f; do
    [[ "$f" == '>'* ]] && echo "$f" || echo "$f" | fold -w 60
done < file
Run Code Online (Sandbox Code Playgroud)