【问题标题】:Discrepancy between linux grep and Ruby's scan resultslinux grep 和 Ruby 的扫描结果不一致
【发布时间】:2015-06-02 02:58:26
【问题描述】:

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

ACTGCTCGGGGGG.....

CGCTCGCTTCTCTC...

大多数序列包含两个特定的基序,一个靠近开头,一个靠近结尾。我正在提取中间的序列:

  1. 使用 grep:grep "motif1.*motif2" inputfile > outputfile
  2. 在带有扫描的 ruby​​ 中,sequences 是一个 DNA 序列数组:

     sequences.each do |seq|
      tmp=seq.scan(/motif1.*motif2/)[0]
      outputfile << tmp if tmp
     end
    

问题是我得到了不同数量的提取序列。 为什么?

【问题讨论】:

  • 每一个输出得到什么?
  • 我对 ruby​​ 不熟悉,但我猜 ruby​​ 可能只返回匹配的部分,而 grep 默认不返回? -- 不管怎样,试试grep -o "pattern" infile &gt; outfile

标签: ruby regex string grep


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-20
    • 2016-08-24
    • 2020-07-01
    • 1970-01-01
    • 2018-10-11
    相关资源
    最近更新 更多