shellは、XMLノードの属性値をどのように読み取るのですか?

Shell内で、sedやawkなどのコマンドラインツールを使用してXMLノードの属性値を読み取ることができます。以下はsedコマンドを使用した方法の一つです。

もし、私たちがexample.xmlという名前のXMLファイルを持っていると仮定しましょう。その中には以下の内容が含まれています。

<root>
  <node attribute="value1"/>
  <node attribute="value2"/>
</root>

nodeノードのattribute属性値を読み取るためには、以下のコマンドを使用します :

attribute_value=$(sed -n 's/.*<node attribute="\([^"]*\)".*/\1/p' example.xml)
echo $attribute_value

結果は次の通りです:

value1
value2

このコマンドは、sedの正規表現を使用して、attribute属性の値を一致させて抽出します。 具体的には、.*

上記の命令は、すべてのノードノードの属性値を読み取り、それをattribute_valueという変数に格納します。最初のノードノードの属性値のみを読み取りたい場合は、以下のコマンドを使用できます:

attribute_value=$(sed -n '0,/<node attribute="\([^"]*\)"/ s/.*<node attribute="\([^"]*\)".*/\1/p' example.xml)
echo $attribute_value

結果は、以下の通りです。

value1

sedコマンドが最初のnodeノードの属性値のみをマッチさせるために、ここで0、/

bannerAds