簡體   English   中英

Perl用不同的方式替換每種情況

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM