我有一个包含以下内容的大文件:
文件名:输入.txt
>chr1
jdlfnhl
dh,ndh
dnh.
dhjl
>chr2
dhfl
dhl
dh;l
>chr3
shgl
sgl
>chr2_random
dgld
我需要以这样的方式拆分此文件,以便获得如下四个单独的文件:
文件 1:chr1.fa
>chr1
jdlfnhl
dh,ndh
dnh.
dhjl
文件 2:chr2.fa
>chr2
dhfl
dhl
dh;l
文件 3:chr3.fa
>chr3
shgl
sgl
文件 4:chr2_random.fa
>chr2_random
dgld
我在 linux 中尝试了 csplit,但无法通过“>”后的文本重命名它们。
csplit -z input.txt '/>/' '{*}'
最佳答案
由于您表示您使用的是 Linux 机器,“awk”似乎是完成这项工作的正确工具。
用法:
./foo.awk your_input_file
foo.awk:
#!/usr/bin/awk -f
/^>chr/ {
OUT=substr($0,2) ".fa"
}
OUT {
print >OUT
}
你也可以一行完成:
awk '/^>chr/ {OUT=substr($0,2) ".fa"}; OUT {print >OUT}' your_input
关于python - 拆分一个fasta文件并在第一行的基础上重命名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11818495/