使用 AWK 线性化 FASTA 序列

逐行阅读

awk '/^>/ {printf("%s%s\t",(N>0?"\n":""),$0);N++;next;} {printf("%s",$0);} END {printf("\n");}' < input.fa

可以将此 awk 脚本读作:

  • 如果当前行($0)像 fasta 标题(^>)那样开始。然后我们打印一个回车符,如果这不是第一个序列。(N>0?"\n":"") 跟随线本身($0),接着是制表(\t)。我们寻找下一行(next;
  • 如果当前行($0)没有像 fasta 标头那样启动,则这是默认的 awk 模式。我们只是打印整行,没有回车。
  • 最后(END)我们只打印最后一个序列的回车符。