linux grep和Ruby的扫描结果之间存在差异

时间:2015-05-29 21:58:27

标签: ruby regex string grep

我有一个DNA序列列表(每行一个):

ACTGCTCGGGGG .....

... CGCTCGCTTCTCTC

大多数序列包含两个特定的图案,一个接近开始,一个接近结尾。我在中间提取序列:

  1. 使用grep:grep "motif1.*motif2" inputfile > outputfile
  2. 带有扫描的红宝石中的
  3. ,其中sequences是一系列DNA序列:

     sequences.each do |seq|
      tmp=seq.scan(/motif1.*motif2/)[0]
      outputfile << tmp if tmp
     end
    
  4. 问题是我得到了不同数量的提取序列。 为什么呢?

1 个答案:

答案 0 :(得分:2)

Ruby的scan默认返回一个带有匹配的正则表达式部分的数组。 Grep不这样做,如果color设置为auto,它会返回突出显示匹配的整行。要仅从检索匹配的部分,请使用-o选项。

grep -o "motif1.*motif2" inputfile > outputfile

上一个命令应保存与扫描相同的输出。