XML エンティティ値を順方向検索で置き換える

XML エンティティ値を順方向検索で置き換える

sedファイルに対して非常に簡単なタスクを実行しようとしています。

sed 's:(?<=<Type>)default(?=</Type>):super:' < myfile.xml

コンセプトはとても簡単です。積極的に見てタグを見つけて、コンテンツを「super」に置き換えてください。残念ながら動作しません、何も交換されません。私は何が間違っていましたか?

次のようなファイルを「編集」しようとしています。

<Hello>
    <World>
        <Type>default</Type>
    </World>
</Hello>

次のようにしてください。

<Hello>
    <World>
        <Type>super</Type>
    </World>
</Hello>

ベストアンサー1

正規表現は正確ですが、sedツアーを処理しません。あなたのコードは以下を使用して正常に動作しますperl

perl -pe 's:(?<=<Type>)default(?=</Type>):super:' your.file

正規表現は通常XML処理には適していないので、試してみることをお勧めします。XMLスター:

xml ed -O -u '//Type' -v 'super' your.file

perlxml場所で編集できるため、交換は不要ですsed

おすすめ記事