我有一个类似
的fasta文件">ENS..._intronX
acgtacgtacgtacgt
">ENS..._intronY
acgtacgtNNNNa
acgtacgtacgtacgt
">ENS..._intronZ
acgtacgtacgtacgt
acgtacgtacgtacgt
我需要删除连续至少2 N
的序列(因为这些内含子被错误注释)。
这里,它将是序列" >ENS..._intronY "
(第3行,第4行和第5行应该删除)
有什么建议吗?
谢谢,
答案 0 :(得分:3)
awk -v RS='">' '!/NN/{printf $0RT}' file
">ENS..._intronX
acgtacgtacgtacgt
">ENS..._intronZ
acgtacgtacgtacgt
acgtacgtacgtacgt
答案 1 :(得分:1)
由于您似乎正在寻求生物信息学,因此请考虑熟悉Bio::SeqIO,因为它对此以及许多其他fasta解析作业有所帮助:
use strict;
use warnings;
use Bio::SeqIO;
my $in = Bio::SeqIO->new( -file => shift, -format => 'Fasta' );
while ( my $seq = $in->next_seq() ) {
print '>' . $seq->id . ' ' . $seq->desc . "\n" . $seq->seq . "\n"
if $seq->seq !~ /nn/i;
}
用法:perl script.pl inFile [>outFile]
最后一个可选参数将输出定向到文件。
数据集输出:
>ENS..._intronX
acgtacgtacgtacgt
>ENS..._intronZ
acgtacgtacgtacgtacgtacgtacgtacgt
希望这有帮助!