[英]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.