Unix sed expression to find xml value -
i have xml file on aix system has following tag...
<g:google_product_category> health & beauty > personal care > cosmetics </g:google_product_category>
i trying use sed
value of element. far can work out expression print stag tag , end tag...
sed -n '/google_product_category/{s/.*<google_product_category>// s/<\/google_product_category.*//;p;}' gpf_20150708063022.xml
can please me this?
original data
the original sample data was:
<g:google_product_category> text on next line </g:google_product_category>
for data, sed
command works:
sed -n '/^<g:google_product_category>/,/^<\/g:google_product_category>/{ /google_product_category/d; p; }'
don't print default. between lines matching start , end tags (where tags not indented), if line matches google_product_category
, delete it; else print it.
revised data
since question has been revised , new sample data is:
<g:google_product_category> health & beauty > personal care > cosmetics </g:google_product_category>
with leading blanks on tag lines (and horribly sloppy layout boot), carets ^
anchor match start of line not appropriate. revised script, therefore, is:
sed -n '/<g:google_product_category>/,/<\/g:google_product_category>/{ /google_product_category/d; p; }'
don't print default. between lines containing start , end tags (where tags may indented, , may preceded or followed arbitrary material ignored), if line matches google_product_category
, delete it; else print it.
given composite , extended data file this:
<g:google_product_category> text on next line </g:google_product_category> <g:google_product_category> health & beauty > personal care > cosmetics </g:google_product_category> <g:google_category> garbage, trash, , delectable goodies. </g:google_category>
the output revised script is:
text on next line health & beauty > personal care > cosmetics
Comments
Post a Comment