我有一个这样的fasta文件
">ENS..._intronX
acgtacgtacgtacgt
">ENS..._intronY
acgtacgtNNNNa
acgtacgtacgtacgt
">ENS..._intronZ
acgtacgtacgtacgt
acgtacgtacgtacgt
我需要删除至少N
连续 2 个的序列(因为这些内含子被错误注释)。
在这里,它将是序列 " >ENS..._intronY "
(应删除第 3、4 和 5 行)
有什么建议么?
谢谢,
呆呆的
awk -v RS='">' '!/NN/{printf $0RT}' file
">ENS..._intronX
acgtacgtacgtacgt
">ENS..._intronZ
acgtacgtacgtacgt
acgtacgtacgtacgt
由于您似乎正在追求生物信息学,因此请考虑熟悉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
希望这可以帮助!