作为同一个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模式匹配工作起来的任何想法,我将不胜感激。谢谢!
答案 0 :(得分:0)
regex someting[^"]+
:这意味着字符串something
后跟任何字符串,直到看到下一个"
。 +
符号在这里表示至少一个或多个匹配项。
grep -oE 'RollUp:"[^"]+|Enzyme:[[:space:]]*"[^"]+"' file