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、/