0

次の文字列があるとします。<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を使用してこれを行うことはできますか?

4

2 に答える 2

0

これにより、すべての行で最初に出現<b>2</b>した with がinvokeに置き換えられます。<b>20</b><a>2</a>

sed '/<a>2<\/a>/s/<b>2<\b>/<b>20<\/b>/' input
于 2013-05-07T01:21:37.257 に答える
0

これで始めることができます:

sed '/<start>/,/<\/start>/s!\(<a>2</a><b>2\)</b>!\10</b>!' input

必要に応じて式を緩和します。たとえば、 tag にスペースを許可しますa

sed '/<start>/,/<\/start>/{/<a>[ ]*2[ ]*<\/a>/s!<b>2<!<b>20<!}' input
于 2013-05-07T01:14:16.977 に答える