示例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 为转换后的文件,如图
第三种方法:
使用getline函数:
示例文件:
awk 'NR==1{print $0}NR>1{if($0 ~ ">"){print"";print $0}else{tmp=$0;getline;if($0 ~ ">"){print tmp;print $0}else{printf tmp""$0}}}' test.fa
输出文件:
非常的简单