使用'sed'将第一次出现的打开/关闭XML标记替换为另一个标记名称

时间:2013-04-19 19:24:09

标签: macos shell sed replace

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

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

如何告诉sed(在mac上)只改变第一次出现的&lt; c&gt; ...&lt; / c&gt;进入&lt; e&gt; ...&lt; / e&gt;,同时仍保留开头和结束标签之间的内容(\ 1)?

谢谢

2 个答案:

答案 0 :(得分:4)

这应该这样做:

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

答案 1 :(得分:1)

您可以像这样使用sed:

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

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