1

假设我有一个如下所示的 XML:

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

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

谢谢

4

2 回答 2

4

这应该这样做:

sed '1,/<c>/s/^<c\(.*\)c>$/<e\1e>/'
于 2013-04-19T19:43:29.670 回答
1

您可以像这样使用 sed:

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

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

于 2013-04-19T19:43:36.593 回答