この XML データを含むファイルがあります。
<?xml version="1.0" encoding="utf-8"?>
<root>
<item>
<tag1>some text</tag1>
<tag2><![CDATA[http://url1.com]]></tag2>
<tag3 />
<tag4>not empty node</tag4>
</item>
<item>
<tag1>some other text</tag1>
<tag2><![CDATA[http://www.url.com]]></tag2>
<tag3 />
<tag4 />
</item>
</root>
(そして内部にはさらに多くのXMLがあります)
XML の一部を削除する Bash スクリプトを作成しようとしています。つまり、空の子要素<item>
を持つすべての要素を削除したいと考えています。<tag4>
<item>
したがって、検索してから<tag4/>
検索し、これをグループ化し、文字</item>
に置き換えたいと考えています。X
私はまだグループ化さえしていません。複数の行で正規表現を行うことに行き詰まっています。
Mac OSX での実行
これは私が持っているものです:
perl -pn -e "s/<item>[\s\S]*<tag4 \/>/X/g" $XML_FILENAME > new_folder/$XML_FILENAME
[\s\S]*
(つまり、スペース文字または任意の文字を削除すると、<item>
タグを置き換えることができますが、次のタグまたは次の行に移動できません。
(私も同様の位置で立ち往生しようecho//
としました)sed