コマンドラインを介してXMLファイルのタグに属性を追加するには?

コマンドラインを介してXMLファイルのタグに属性を追加するには?

タグの末尾にフィールドを追加するためにsedスクリプトを使用しようとしています。 XMLファイルにタグがあるとしましょう。

<book name="Sed tutorial" price="250"/>

Book_Width="A"これで、ラベルの最後にフィールドを追加して<book/>ラベルを次のように作成したいと思います。

<book name="Sed tutorial" price="250" Book_Width="A"/>

私は前に試しましたsed

sed '/<book "[^>]*>/ a Book_Width="A"'

しかしそれは以下を提供します:

<book name="Sed tutorial" price="250"/>
Book_Width="A"

ベストアンサー1

sedXMLを解析するには、次のXMLパーサーを使用しないでくださいxmlstarlet。あなたの仕事については次のとおりです。

xmlstarlet ed -O --inplace --insert "/book" --type attr -n Book_Width -v A xml_file

その後、ファイルの内容は次のようになります。

<book name="Sed tutorial" price="250" Book_Width="A"/>
  • edXMLツリーを編集する編集モードを示します。
  • -OXMLタグを省略します。
  • 私たちは何かを挿入したいと思います--insert
  • "/book"挿入されたパスです。
  • --type attr:これは私たちが挿入したい属性です。
  • -n属性の名前です。
  • -v

おすすめ記事