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
perl
xml
場所で編集できるため、交換は不要ですsed
。