那是我的第一篇文章。我想写一个小脚本来计算一行中的多个唯一重复。文本是 DNA 序列,在此处输入链接描述,因此文本将是四个字母的组合:A、T、G 和 C。如果一个字符串出现两次,则计算两次,以此类推。
我要查找的唯一字符串是三个 AG、GA、CT 或 TC 的重复,分别是 (AG)3、(GA)3、(CT)3 和 (TC)3。我不希望程序计算四次或更多的重复次数。
要计数的字符串:
AGAGAG
GAGAGA
CTCTCT
TCTCTC
示例输入文件(由制表符分隔的两列):
Sequence_1 AGAGAG
Sequence_2 AGAGAGT
Sequence_3 AGAGAGAG
Sequence_4 AGAGAT
Sequence_5 AGAGAGAGAGAGAGAGAGT
Sequence_6 AGAGAGTAGAGAG
Sequence_7 CTCTCTCTCTC
Sequence_8 TAGAGAGAT
Sequence_9 TAAGAGAGAAG
期望的输出:
Sequence_1 AGAGAG 1
Sequence_2 AGAGAGT 1
Sequence_3 AGAGAGAG 0
Sequence_4 AGAGAT 0
Sequence_5 AGAGAGAGAGAGAGAGAG 0
Sequence_6 AGAGAGTAGAGAG 2
Sequence_7 CTCTCTCTCTCAAGAGAG 1
Sequence_8 TAGAGAGAT 1
Sequence_9 TAAGAGAGAAG 1
我有一个用 awk 写的小单行,但我认为它在匹配字符串时并不具体:
awk '{if($1 ~ /AGAGAG/)x++; if($1 ~ /TCTCTC/)x++;if($1 ~ /GAGAGA/)x++;if($1 ~ /CTCTCT/)x++;print x;x=0}' inputfile.tab
非常感谢你的帮助。一切顺利,贝尔纳多