3

すべての要素から「失敗」を抽出して合計するにはどうすればよいですか?

<gateway>
    <smscs>
        <count>3</count>
        <smsc>
            <id>a</id>
            <received><sms>0</sms><dlr>0</dlr></received>
            <sent><sms>10537</sms><dlr>0</dlr></sent>
            <failed>13</failed>
            <queued>6272</queued>
        </smsc>
        <smsc>
            <id>b</id>
            <received><sms>0</sms><dlr>0</dlr></received>
            <sent><sms>10530</sms><dlr>0</dlr></sent>
            <failed>10</failed>
            <queued>6284</queued>
        </smsc>
        <smsc>
            <id>c</id>
            <received><sms>0</sms><dlr>0</dlr></received>
            <sent><sms>10679</sms><dlr>0</dlr></sent>
            <failed>11</failed>
            <queued>6291</queued>
        </smsc>
    </smscs>
</gateway>
4

2 に答える 2

4

私は単に使用しました

xmlstarlet sel -t -v "sum(/gateway/smscs/smsc/failed)" -n input.xml

戻った

34

アイデアはsum()、ノードセットを取り、数値に変換されたすべての要素の文字列値の合計を返す関数を使用することです。

于 2013-07-19T11:45:00.250 に答える
0

で解決

xmlstarlet sel -t -m "gateway/smscs/smsc/failed" -v "." -n | awk '{s+=$1} END {print s}'
于 2013-07-19T11:53:38.240 に答える