将基因fa或蛋白fa序列文件由多行转换为一行的awk解决方法
2022-01-16 本文已影响0人
吃吃吃_就知道吃
示例fa文件:

新建 script.sh,输入以下内容:
awk 'BEGIN{FS=">"}{if(NF==2){print $0}else{printf $0}}' $1 | awk 'BEGIN{FS=">"}NR==1{print $0}NR>1{if(NF==2){print $1;print ">"$2}else{print $0}}' > all_oneline.fa
或者以下只需一行awk命令(闲来无事突然想出来的骚操作):
awk 'NR==1{a[NR]=$0}NR>1{if(a[NR-1] ~ ">"){print a[NR-1];a[NR]=$0}else if($0 ~ ">"){print a[NR-1];a[NR]=$0}else{printf a[NR-1];a[NR]=$0}}END{print a[NR]}' test.fa > all_oneline.fa
之后运行,第一个参数为需要转换的多行fa文件,输出文件all_oneline.fa 为转换后的文件,如图

非常的简单