假设我有以下字符串。如果<b>2</b> to <b>20</b>
<a>2</a>
<start>
<a>1</a><b>1</b>
<a>2</a><b>2</b>
.
.
<a>10</a><b>10</b>
<a>2</a><b>2</b>
</start>
新字符串应该如下所示
<start>
<a>1</a><b>1</b>
<a>2</a><b>20</b>
.
.
<a>10</a><b>10</b>
<a>2</a><b>20</b>
</start>
我可以使用sed吗?
答案 0 :(得分:0)
你可以从这开始:
sed '/<start>/,/<\/start>/s!\(<a>2</a><b>2\)</b>!\10</b>!' input
并根据需要放宽表达式,例如允许标记a
中的空格:
sed '/<start>/,/<\/start>/{/<a>[ ]*2[ ]*<\/a>/s!<b>2<!<b>20<!}' input
答案 1 :(得分:0)
这将在<b>2</b>
调用的所有行中替换<b>20</b>
第一次出现<a>2</a>
:
sed '/<a>2<\/a>/s/<b>2<\b>/<b>20<\/b>/' input