我有这个文件:
>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)
任何帮助将非常感谢!谢谢
您可以fold在BASH循环中使用内置实用程序:
while read -r f; do
[[ "$f" == '>'* ]] && echo "$f" || echo "$f" | fold -w 60
done < file
Run Code Online (Sandbox Code Playgroud)