【问题标题】:Search text matching a pattern inside an XML tag搜索与 XML 标记内的模式匹配的文本
【发布时间】:2013-03-20 05:15:00
【问题描述】:

我有一个包含 XML 标记的文件。每行都有一个根元素和几个子元素。结构类似于这样

<document><title>some title1</title><abstract>Some abstract1</abstract></document>
<document><title>some title2</title><abstract>Some abstract2</abstract></document>
<document><title>some title3</title><abstract>Some abstract3</abstract></document>
<document><title>some title4</title><abstract>Some abstract4</abstract></document>

现在我必须找到标签包含特定单词的所有行。 eg:获取&lt;abstract&gt;标签内所有包含abstract1的行。

如何在 grep、awk 或 sed 中执行此操作?

【问题讨论】:

  • 你想匹配什么? Some abstract1?
  • 是的,或者类似abstract1,但它应该出现在 标签内
  • 似乎提到this famous question 可能是合适的。

标签: sed awk grep unix


【解决方案1】:

使用 sed:

sed -n '/<abstract>[^<]*abstract1/p' input

【讨论】:

    【解决方案2】:

    更新:

        grep  -nir  "<abstract>.*word.*</abstract>" filename
    

    【讨论】:

    • 这会给我所有包含“你的话”的行。但我只想找到在特定标签(如 . 中包含“你的词”)的行
    • 更新后的代码有效。但我已经接受了另一个答案。所以我只能投票。
    猜你喜欢
    • 2021-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-15
    • 2018-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多