我是Ruby新手,我喜欢一些指示。我有一个包含以下许多内容的文件:
更新:
+
?@??>=???>?>??>?>=9>>==?2>===<=>=== @IL9_2657:1:1:1:1217/1
TTTTCCGTGCTTTTTTTTTCGGTTCGATCCCCTCTTT
+
我想要一个脚本,对每个包含+到+的块说,如果序列有
,则删除块TTTTTTTTT.
提前致谢。
标记
答案 0 :(得分:2)
这应该做:
s = 'preceding_string+ ?@??>=???>?>??>?>=9>>==?2>===<=>=== @IL9_2657:1:1:1:1217/1 TTTTCCGTGCTTTTTTTTTCGGTTCGATCCCCTCTTT +following_string'
s.gsub!(/\+[^+]*TTTTTTTTT[^+]*\+/, '')
p s
# => "preceding_stringfollowing_string"
答案 1 :(得分:1)
首先将数据拆分为数组。 scan
可以使用简单的正则表达式执行此操作。然后,您可以使用reject!
删除不需要的项目。例如:
data = "+x+ +y+ +TTTTTTTTT+ +z+"
blocks = data.scan(/\+[^+]+\+/)
blocks.reject! { |b| b.include? "TTTTTTTTT" }
p blocks
# => ["+x+", "+y+", "+z+"]
答案 2 :(得分:1)
ruby -0777 -ne 'puts $_.split(/\+/).reject{|x| x[/TTTTTTT/] }.join("+")' file
答案 3 :(得分:1)
序列中是否含有过多的腺嘌呤?如果是这样,使用bioruby得到序列的反向补码。