拆分fasta文件并在第一行的基础上重命名

lea*_*ner 1 python linux split fasta

我有一个包含以下内容的大文件:

filename:input.txt

>chr1
jdlfnhl
dh,ndh
dnh.

dhjl

>chr2
dhfl
dhl
dh;l

>chr3

shgl
sgl

>chr2_random
dgld
Run Code Online (Sandbox Code Playgroud)

我需要拆分这个文件,以便我得到四个单独的文件,如下所示:

文件1:chr1.fa

>chr1
jdlfnhl
dh,ndh
dnh.

dhjl
Run Code Online (Sandbox Code Playgroud)

文件2:chr2.fa

>chr2
dhfl
dhl
dh;l
Run Code Online (Sandbox Code Playgroud)

文件3:chr3.fa

>chr3

shgl
sgl
Run Code Online (Sandbox Code Playgroud)

文件4:chr2_random.fa

>chr2_random
dgld
Run Code Online (Sandbox Code Playgroud)

我在linux中尝试了csplit,但是在">"之后不能立即通过文本重命名它们.

csplit -z input.txt '/>/' '{*}'
Run Code Online (Sandbox Code Playgroud)

The*_*eke 8

既然你表明你在Linux机器上'awk'似乎是适合这项工作的工具.

用法:
./foo.awk your_input_file

foo.awk:

#!/usr/bin/awk -f

/^>chr/ {
    OUT=substr($0,2) ".fa"
}

OUT {
    print >OUT
}
Run Code Online (Sandbox Code Playgroud)

你也可以在一行中做到这一点:

awk '/^>chr/ {OUT=substr($0,2) ".fa"}; OUT {print >OUT}' your_input
Run Code Online (Sandbox Code Playgroud)