我有兩個包含生物DNA序列數據的文件。這些文件中的每一個都是python腳本的輸出,該腳本根據序列開始處的DNA條形碼將每個DNA序列分配給樣本ID。這些.txt文件中的一個的輸出是這樣的:修改行名以避免在終端中合併文件時的冗餘
>S066_1 IGJRWKL02G0QZG orig_bc=ACACGTGTCGC new_bc=ACACGTGTCGC bc_diffs=0
TTAAGTTCAGCGGGTATCCCTACCTGATCCGAGGTCAACCGTGAGAAGTTGAGGTTATGGCAAGCATCCATAAGAACCCTATAGCGAGAATAATTACTACGCTTAGAGCCAGATGGCACCGCCACTGATTTTAGGGGCCGCTGAATAGCGAGCTCCAAGACCCCTTGCGGGATTGGTCAAAATAGACGCTCGAACAGGCATGCCCCTCGGAATACCAAGGGGCGCAATGTGCGTCCAAAGATTCGATGATTCACTGAATTCTGCAATTCACATTACTTATCGCATTTCGCAGCGTTCTTCATCGATGACGAGTCTAG
>S045_2 IGJRWKL02H5XHD orig_bc=ATCTGACGTCA new_bc=ATCTGACGTCA bc_diffs=0
CTAAGTTCAGCGGGTAGTCTTGTCTGATATCAGGTCCAATTGAGATACCACCGACAATCATTCGATCATCAACGATACAGAATTTCCCAAATAAATCTCTCTACGCAACTAAATGCAGCGTCTCCGTACATCGCGAAATACCCTACTAAACAACGATCCACAGCTCAAACCGACAACCTCCAGTACACCTCAAGGCACACAGGGGATAGG
第一行是序列ID,和DNA序列中的第二行。 S_066
在ID的第一部分中指示該序列來自樣本066,並且_1
指示其文件中的第一序列(而不是來自S_066
本身的第一序列)。由於正在使用DNA測序技術的細微差別,我需要從原始測序文件中生成兩個像這樣的文件,結果是一個輸出,其中有兩個文件,然後我使用cat
合併在一起。到現在爲止還挺好。
我工作流中的下一個下游步驟不允許使用相同的樣本名稱。現在,它會遇到一些相同的序列ID,因此會出錯,並關閉。因此,這兩個文件中的第400個序列必須屬於同一個樣本,或者其他內容,從而生成相同的樣本ID(即,這兩個文件可能都有S066_400
)。
我想要做的是使用一些代碼在_
之後立即在第二個文件的每一行上插入一個數字(1000 ,, 4971,無論什麼),從第一行開始。這樣ID就不會被混淆,我可以繼續。因此,它將覆蓋S066_2
至S066_24971
或S066_49712
。部分問題是ID的長度可能變化,因此它可能以S066_
或49BBT1_
開頭。
作爲一個旁註:爲什麼地球上你想這樣做在bash? –