从一个文件(input.fasta)提取第10至20个序列存到另一个文件(output.fasta)
awk -v RS='>' 'NR>1{i++}i>=10&&i<=20{print ">"$0}' input.fasta | sed '/^$/d' > output.fasta
将某一文件(input.fasta)中每一条序列保存到一个文件中
# 输出文件名是1.fasta, 2.fasta, 3.fasta...
awk '/^>/{f=++d".fasta"} {print > f}' input.fasta
# 输出文件名是序列ID
awk '/^>/ {fout=sprintf("%s.fasta",substr($0,2));}{print >> fout;}' input.fasta
根据IDs(id.txt)从fasta文件(input.fasta)中提取序列
awk -F'>' 'NR==FNR{ids[$0]; next} NF>1{f=($2 in ids)} f' id.txt seq.fasta
网友评论