次のXMLファイルがあります。
<id>456</id>
<root>
<value>1</value>
<intNum>2</intNum>
</root>
<root>
<eulav>1</eulav>
<muNtni>2</muNtni>
</root>
<id>456</id>
私は覚えて、次のことをしたいと思います。
sed 's/\<root\>/\
\<root\>
$herecomestheid
基本的にこれがすること<root>
はに置き換えることです<root>\n<id>456</id>
。\n
この場合、改行を意味します。私はすでにこれを知っていますが、私が経験している問題はそれを覚えて、<id>456</id>
後で使用するために保管することです。
私はこれを試しました(明らかにうまくいきません)。
sed -i '' 's/\<root\>/\
\<root\>\
\<id\>.\<\/id\>/g'
私は次のようにします:
cat file.xml | grep '\<id\>*\<\/id\>'
grep出力を変数に入れてみてください。これも明らかに動作しません。
編集: <id>*</id>
ルートディレクトリにある必要があります。
ベストアンサー1
XMLをテキストとして扱うのは一般的に信頼できる解決策ではありませんが、そうする必要があると主張する場合はsedを使用できます。スペアスペース 例えば
sed -e '/<id>[0-9]*<\/id>/h' -e '/<root>/{x;p;x;}' file.xml