xmlstarlet

 <inventory title="OmniCorp Store #45x10^3">
   <section name="health">
     <item upc="123456789" stock="12">
       <name>Invisibility Cream</name>
       <price>14.50</price>
       <description>Makes you invisible</description>
     </item>
     <item upc="445322344" stock="18">
       <name>Levitation Salve</name>
       <price>23.99</price>
       <description>Levitate yourself for up to 3 hours per application</description>
     </item>
   </section>
   <section name="food">
     <item upc="485672034" stock="653">
       <name>Blork and Freen Instameal</name>
       <price>4.95</price>
       <description>A tasty meal in a tablet; just add water</description>
     </item>
     <item upc="132957764" stock="44">
       <name>Grob winglets</name>
       <price>3.56</price>
       <description>Tender winglets of Grob. Just add water</description>
     </item>
   </section>
 </inventory>
 xmlstarlet sel -t -c "descendant::item[contains(string(descendant::name),&#39;bil&#39;)]" test.xml

子孫要素に名前をもちその内容がbilを含んでいる ルートからの子孫要素を選択

 xmlstarlet sel -t -c "descendant::item[number(child::price)>"10"][contains(string(child::description),"3")]" test.xml

子供priceの数値が10以上で子供descriptionが文字列3を含んでいる ルートからの子孫要素item を表示