serverlist.xmlでネストされたタグを検索しているシェルスクリプトが必要です。スクリプトはpingタグを検索する必要があります。 pingの値が0より大きい場合、タグ "numplayers"の値は1つ多くなければなりません。 pingタグが0の場合、タグ "numplayers。XML:特定の値を検索して他の値を書き直す
などの値を上げるべきではありません。このxmlファイルには、サーバー1の名前タグ" hansfrans "がping値を持つためnumplayersタグを数えます"30"であるが、名前タグ "E.Krenz^GDR"を持つプレイヤーは、ping値が "0"であるためカウントしないでください
例:サーバー2にはping 0のプレイヤーが2人いるため、numplayersの値は0 。
serverlist.xmlは、サーバの乱数を持っているので、それはすべてのサーバー自体のnumplayers値をカウントしなければなりません。
serverlist.xml
<qstat>
<server>
<hostname>1.2.3.4:27965</hostname>
<name>Server 1</name>
<gametype>type1</gametype>
<map>q3dm13</map>
<numplayers>2</numplayers>
<maxplayers>14</maxplayers>
<numspectators>0</numspectators>
<maxspectators>0</maxspectators>
<retries>0</retries>
<players>
<player>
<name>hansfrans</name>
<score>27</score>
<ping>30</ping>
</player>
<player>
<name>E.Krenz^GDR</name>
<score>16</score>
<ping>0</ping>
</player>
</players>
</server>
<server>
<hostname>2.3.4.5:27964</hostname>
<name>Server 2</name>
<gametype>type 1</gametype>
<map>q3dm1</map>
<numplayers>2</numplayers>
<maxplayers>16</maxplayers>
<numspectators>0</numspectators>
<maxspectators>0</maxspectators>
<retries>0</retries>
<players>
<player>
<name>G.Schroeder^GER</name>
<score>17</score>
<ping>0</ping>
</player>
<player>
<name>H.Kohl^GER</name>
<score>45</score>
<ping>0</ping>
</player>
</players>
</server>
</qstat>
ありがとうございました。
は私達にあなたの可能な解決策を提示してください。 – sjsam
xml_grep ping serverlist.xmlもっと現時点ではありません – hansfrans
grep -c '' serverlist.xmlを使用すると、すべてping 0でカウントされます。これですべてのサーバー(サーバータグの間) 。どのようにこれを行うにはどのようなアイデア? – hansfrans