处理 fasta 文件中多行显示的问题

从网络上下载的 fasta 文件,其序列可能是以一行 60bp 碱基这样的格式排列的。这样的格式虽然易于人眼阅读,但非常不适合给程序读取,因为要额外建立复杂的代码逻辑来处理分行的问题。这里给出了一个快速的解决办法。
假设我们下载到的 example.fasta 文件是这样的:
>sequence_1
ATGGATCCCATCAATT
GCTCAGCTGTGGATCT
CTCTGATGTTCTGGCC
AGCAAGATGAGTCCCA
>sequence_2
GTAAGATCCTCCTCTC
CCTGACTCTCTCTATTC
TGGCTGTGGCGACCAC
CACTATCAACTCCCTGG
TCATCACTGCTATTCTG
要使序列名单独一行,序列单独一行,在 shell 中运行代码:
awk ‘/^>/&&NR>1{print “”;}{ printf “%s”,/^>/ ? $0″%”:$0 }’ example.fasta > example_edited_1.fasta
example_edited_2.fasta 文件的内容变成了这样:
>sequence_1
ATGGATCCCATCAATTGCTCAGCTGTGGATCTCTCTGATGTTCTGGCCAGCAAGATGAGTCCCA
>sequence_2G
TAAGATCCTCCTCTCCCTGACTCTCTCTATTCTGGCTGTGGCGACCACCACTATCAACTCCCTGGTCATCACTGCTATTCTG
要使序列名和序列全部在一行,在 shell 中运行代码:
awk ‘/^>/&&NR>1{print “”;}{ printf “%s”,/^>/ ? $0″ “:$0 }’ example.fasta > example_edited_2.fasta
example_edited_2.fasta 文件的内容变成了这样:
>sequence_1ATGGATCCCATCAATTGCTCAGCTGTGGATCTCTCTGATGTTCTGGCCAGCAAGATGAGTCCCA
>sequence_2GTAAGATCCTCCTCTCCCTGACTCTCTCTATTCTGGCTGTGGCGACCACCACTATCAACTCCCTGGTCATCACTGCTATTCTG