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),'bil')]" 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 を表示