[英]Perl replace every occurrence differently
在perl脚本中,我需要替换几个字符串。 此刻,我使用:
$fasta =~ s/\>[^_]+_([^\/]+)[^\n]+/\>$1/g;
目的是在每个序列名称中格式化FASTA文件。 就我而言,它运作良好,因此我不需要接触这部分。 但是,碰巧序列名称在文件中出现了几次。 最后一定不要重复两次(或多次)相同的序列名。 因此,我需要例如:
seqName1
seqName2
etc.
(而不是seqName,seqName等)
是否有可能以某种方式自动处理每个事件? 我不知道有多少序列,是否有相似的名称,等等。例如,一个想法是在每次出现时连接一个随机字符串,因此,我的问题是。
非常感谢。
John完美地解决了这个问题,chepner帮助这个聪明的主意避免了冲突,这是最终结果:
$fasta =~ s/\>[^_]+_([^\/]+)[^\n]+/
sub {
return '>'.$1.$i++;
}->();
/eg;
非常感谢。
前几天我实际上是在尝试做这样的事情,这就是我的想法
$fasta =~ s/\>[^_]+_([^\/]+)[^\n]+/
sub {
# return random string
}->();
/eg;
\\e
修饰符将替换解释为代码,而不是文本。 我使用匿名代码ref,以便可以随时返回。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.