我有一个file.fasta像这样:
>NODE_1_length_4203_cov_583903
CCCCCAGTAATTGTGCTGCGCGGCGATGCTAACAAGTTAAAATGCTATCGCTGAGCTAAG
AAAAAGCATGGAAGCTTGGTAAAGTactACAGTactACGTGAATGTaccATCAGATTGTG
TTTGTTAGTCGCGCTTTTTTTTTTTTGGAATTTTTTGGAATTTTTTTTGCGCTAACAacc
TCCTGCCGTTTTGCCCGTGCATATCGGTCACGAACAAATCTGATTactAAACACAGTAGC
CACGGGTGGTAAGAGCAGC
.
.
.
>NODE_2_length_1959_cov_102497
ATATAAAAAAAAAAGGAactCCAAAATGCAAAAAATGTACAAATCTAGAactCAAAATCA
TGAATTAACAAAAAAAAAAGCCCAAAAGAAAAGCATCactTGGAATGCAAGAATTTCATC
ATGGAACATAAAAATATAATGAAAATATAACAATCATGGAAGGCAactGTCATCAAATAA
CAAATCTGAAAAAAATCTCAATGCATCAAGAAAAAACAGAAGCGGTAAAAGCCGTTGacc
TTCTTTGCCTAATGAAATAGAAACAATGCAGAAGTACATCCTGTaccTactGACactTAG
ATGTTGATGCTCCTGTTGTTACACGGGTGGTAAGAGCAGCTCTGGactCGGCGCGCCGTT
TTGGAGGTTGGGTGGATCCTAGTCCaccTGGAAAAATGGCCACACAAAGGGTGTCTAGAA
.
.
.
我想查找特定字符串的所有匹配项(例如“ CACGGGTGGTAAGAGCAGC”) 我通过使用grep来做到这一点,例如:
grep -E "CACGGGTGGTAAGAGCAGC" file.fasta
然后我要对所有出现的“ cov”值求和。因此,脚本必须查找出现的内容,并且对于每个出现的内容都必须向上移动到以“>”(或包含单词“ cov” ...是相同的...)开头的更近的行,并可能将其打印为像这样的列表:
>NODE_1_length_4203_cov_583903
>NODE_2_length_1959_cov_102497
,然后将cov的值求和,如下所示: 583903 + 102497 =686400
如果您愿意,它甚至可以在一种解决方案中完成所有操作,例如: 查找出现的事件,然后对找到的所有出现的事件求和所有cov参数的值(相对于以“>”开头的每个出现在上一行的值)。