【问题标题】:using 'sed' to replace the first occurrence of an open/close XML tag with another tag name使用 'sed' 将第一次出现的打开/关闭 XML 标记替换为另一个标记名称
【发布时间】:2013-04-13 06:54:22
【问题描述】:

如果我有一个如下所示的 XML:

<a>
<b>...</b>
<c>...</c>
<c>...</c>
<d>..</d>
</a>

我如何告诉 sed(在 Mac 上)仅将第一次出现的 ... 更改为 ...,同时仍保留其间的内容( \1) 开始和结束标签?

谢谢

【问题讨论】:

    标签: macos shell sed replace


    【解决方案1】:

    你可以像这样使用 sed:

    sed -E '1,/<c>.*<\/c>/s#<c>(.*)</c>#<e>\1</e>#' inFile
    

    现场演示:http://ideone.com/fzsZg5

    【讨论】:

    • 非常感谢!欣赏它
    【解决方案2】:

    应该这样做:

    sed '1,/<c>/s/^<c\(.*\)c>$/<e\1e>/'
    

    【讨论】:

      猜你喜欢
      • 2018-03-10
      • 2014-09-01
      • 2016-04-02
      • 1970-01-01
      • 2017-01-30
      • 1970-01-01
      • 1970-01-01
      • 2014-09-05
      • 1970-01-01
      相关资源
      最近更新 更多