【问题标题】:Sed - grab html tags that have a pattern match inbetweenSed - 抓取中间有模式匹配的 html 标签
【发布时间】:2014-09-30 20:59:14
【问题描述】:

我想使用 bash 工具来抓取标签之间的内容,但前提是模式匹配其中的某处。

例如,如果我有这个文件:

<tag>
CAT
</tag>

...

<tag>
DOG
HORSE
</tag>

...
<tag>
DOG
CAT
</tag>

我希望输出是:

<tag>
CAT
</tag>
<tag>
DOG
CAT
</tag>

我可以使用 sed 打印开始和结束标签 cat file.txt | sed -n '/&lt;tag/,/&lt;\/tag/p' 的内容,但是如何根据它们是否在至少一行上有“CAT”一词来过滤“每个块”?

【问题讨论】:

    标签: regex bash sed


    【解决方案1】:

    不确定sed 是否可以做到这一点。但如果您愿意使用perl(bash 工具),您可以继续使用这个正则表达式。

    (<tag>(?=(?:(?!<\/tag>).)*CAT)(?:(?!<\/tag>).)*<\/tag>)
    

    只需抓住捕获。不要忘记添加标志sg。查看演示。

    http://regex101.com/r/aW3pR4/8

    【讨论】:

      猜你喜欢
      • 2023-04-11
      • 1970-01-01
      • 2022-01-12
      • 2014-06-17
      • 2017-12-08
      • 2018-07-30
      • 1970-01-01
      • 2018-07-08
      • 1970-01-01
      相关资源
      最近更新 更多