查找字符串中所有模式出现的位置

时间:2012-04-17 20:18:09

标签: design-patterns full-text-search fastq

我正在处理DNA序列文件(FASTQ文件)。

@ Read1- GOOD

NAAAGTGAGATTCGAAATAAATACATCTGTGGCTTCACTTTGAACGGAACGATGTTCTCGTAT

+

1D=DDADEHHHHHIGIJJJJGGFGHIHIJJIJJJJJIIIIGG99BDGHHHEGHJJIHHJJGIH

@ Read2-有2个不好的地方

NTTCGTAAAGCAGTGAACGAAATACATCTGTGGCTTCACTATGTTCTCGTATGCCGGAACGTC

+

2#1=DFFFFHHHGHGHIJHJIJJJJJJJJJJJJJJJJJGIIHJJJJIIIGGHIIJJIHIIIIJG

@ Read3:一个好,一个早期

NCAGGATCTGCATCGTGAACGATACATCTGTGGCTTCACTAGAACGTGTTCTCGTATGCCGTC

+

B#1:BDDDDFFHDH@AHIGCHIIIIIIIIIIIIIIIIIIIIGIIFHBGGGFGIIIIGGHIIIIG

@ Read4:一个好,一个在

之后
NGCCCTTGACCGCAGGTTAGTGCTAAATACATCTGTGTACTGAACGTCACTATGTTCTCGTAT

+

E#1:A?==@@B>AC<7,2A@ABBBBCBCBCCBCCBBBBBBBB<<?AA?AA)8>ABBAAABABBA

我想在一个序列中寻找一个6个字符长的模式(GAACG)(从@开始的行下面)。

重要的是我希望在字符串中的位置42处找到我的模式。

如果在该位置找到模式,我将序列及其前面的行以及后面的2行复制到新文件中。 当用awk尝试这个时它没有用,因为所有的index(),match()函数只查看第一次出现而且看起来不再那么如果它在41位之前找到我的模式那么它就不会将我的数据复制到新文件。

基本上我的脚本应该返回读取1,3和4 ......

如何筛选模式中的FASTQ文件,评估找到它的所有位置,并且只考虑位置42处的序列,无论模式是否也出现在其他位置?

1 个答案:

答案 0 :(得分:0)

听起来像正则表达式问题。

许多语言和脚本语言都支持正则表达式,但这似乎是javascript中的一个很好的例子:

how-to-find-all-occurrences-of-one-string-in-another-in-javascript