与多模式grep命令结合使用时,Grep单个命令不起作用

时间:2019-07-01 17:34:52

标签: grep

作为同一个grep命令的一部分,我需要执行多个grep匹配。当我单独运行它们时,它们可以正常工作。但不是在一起的时候。我希望有人可以向我展示解决方案,或者可以帮助我找到解决方法。这是示例流:

<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css">
<table class="table">
  <thead>
    <tr>
      <th>column1</th>
      <th>column2</th>
      <th>column3</th>
      <th>column4</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>td</td>
      <td>td</td>
      <td>td</td>
      <td>td</td>
    </tr>
    <tr>
      <td>td</td>
      <td>td</td>
      <td>td</td>
      <td>td</td>
    </tr>
    <tr>
      <td>td</td>
      <td>td</td>
      <td>td</td>
      <td>td</td>
    </tr>
    <tr>
      <td>td</td>
      <td>td</td>
      <td>td</td>
      <td>td</td>
    </tr>
    <tr>
      <td>td</td>
      <td>td</td>
      <td>td</td>
      <td>td</td>
    </tr>
    <tr>
      <td>td</td>
      <td>td</td>
      <td>td</td>
      <td>td</td>
    </tr>
    <tr>
      <td>td</td>
      <td>td</td>
      <td>td</td>
      <td>td</td>
    </tr>
    <tr>
      <td>td</td>
      <td>td</td>
      <td>td</td>
      <td>td</td>
    </tr>
    <tr>
      <td>td</td>
      <td>td</td>
      <td>td</td>
      <td>td</td>
    </tr>
    <tr>
      <td>td</td>
      <td>td</td>
      <td>td</td>
      <td>td</td>
    </tr>
    <tr>
      <td>td</td>
      <td>td</td>
      <td>td</td>
      <td>td</td>
    </tr>
    <tr>
      <td>td</td>
      <td>td</td>
      <td>td</td>
      <td>td</td>
    </tr>
    <tr>
      <td>td</td>
      <td>td</td>
      <td>td</td>
      <td>td</td>
    </tr>
    <tr>
      <td>td</td>
      <td>td</td>
      <td>td</td>
      <td>td</td>
    </tr>
  </tbody>

</table>

在第一个命令中,我需要隔离所有RollUp子字符串。值始终为A或V:

(string start..) RollUp:"V" Enzyme:"ENZA ENZB ENZD ENZE" (..string end) 

在第二个命令中,我需要隔离酶值的所有组合(总共1-20个,中间有空格,不知道值名称)。此命令有效:

grep -o "RollUp:\"[AV]\""

但是,我需要将两种模式都作为同一流的一部分进行匹配。当我尝试时:

grep -oE 'Enzyme:[[:space:]]*"[^"]+"'

,不返回任何内容。对于将这种双重grep模式匹配工作起来的任何想法,我将不胜感激。谢谢!

1 个答案:

答案 0 :(得分:0)

regex someting[^"]+:这意味着字符串something后跟任何字符串,直到看到下一个"+符号在这里表示至少一个或多个匹配项。

grep -oE 'RollUp:"[^"]+|Enzyme:[[:space:]]*"[^"]+"' file