![如何提取多行图案](https://linux22.com/image/141012/%E5%A6%82%E4%BD%95%E6%8F%90%E5%8F%96%E5%A4%9A%E8%A1%8C%E5%9B%BE%E6%A1%88.png)
我想知道如何提取多行模式,特别是当该模式在文本中重复时。
文字如下:
<tr>
<td>Wife</td>
<td>Pilialo</td>
</tr>
<tr>
<td>Wind</td>
<td>Makani Dav</td>
</tr>
...
文本以相同的格式继续:
<tr>
<td>some text</td>
<td>some text2</td>
</tr>
我需要获取每个单元格中的第二个单元格<tr> ... </tr>
,即输出应该是(如果只有上述两个单元格<tr> ... </tr>
)
Pilialo
Makani Dav
答案1
假设您的示例包含在有效的 HTML/XML 文档中(具体来说,有一个根元素),并且正如 G-Man 所说,您想要第二个表格单元格对于每一行,使用 XMLstarlet 很容易:
< /tmp/xml xmlstarlet sel -t -m '//tr/td[2]' -v . -n
Pilialo
Makani
sel
从文档中选择
-t
这是模板:
-m '//tr/td[2]'
匹配任意位置td
下的第二个元素tr
-v .
输出节点(内部文本)的值
-n
追加换行符