2013-03-21 78 views
-1

我试图使用awk从FASTA文件中提取序列。AWK:将行写入多个文件

例如该文件看起来像这样,它包含703个序列。我想提取它们中的每一个来分隔文件。

>sequence_1 
AACTTGGCCTT 
>sequence_2 
AACTTGGCCTT 
. 
. 
. 

我使用这个awk脚本:

awk '/>/ {OUT=substr($0,2) ".fasta"}; OUT {print >OUT}'file.fasta 

...这工作,但只对16首,然后我得到一个错误说;

.fasta makes too many open files 
input record number 35, file file.fasta 
source line number 1 
+0

-1谷歌它有点,你会发现的东西。 – 2013-03-21 17:54:44

+0

感谢您编辑格式。相信我,我一整天都在努力为bash oneliner找到不同的解决方案。任何指针,将不胜感激! – 2013-03-21 18:00:36

+2

不要浪费太多时间来追求在线解决方案。如果你可以用10条线快速解决问题,那就去做吧。 – pynexj 2013-03-22 02:32:13

回答

3

您需要在完成后关闭文件。尝试:

awk '/>/ {close(OUT); OUT=substr($0,2) ".fasta"}; OUT {print > OUT}' file.fasta