shell脚本读取xml文件,输出指定截取字段!!!

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<tasks xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="modelSchema.xsd">
<task id="OPER_FAILCAUSE_TASK_1" business="OPER_FAILCAUSE" period="5Min" enabled="true" persistence="true" condition="" >
<dimensionIds id="STARTTIME" />
<counterIds id="MAX_PD"/>
</task>
</tasks>
以上xml,读取后输出结果如下(只读取task节点中的字段):
OPER_FAILCAUSE_TASK_1,OPER_FAILCAUSE
就输出这两个值,谢谢!!!

sed -nr '/task id/{s/.*<task id="([^"]+)"\sbusiness="([^"]+)".*/\1,\2/;p}' test.xml

或者:

awk '/task id/{split($0,a,"(=\")|(\" )");print a[2]","a[4]}' test.xml

 或者:

sed -n '/task id/{s/"//g;s/^ *//;p}' test.xml | awk -F"[= ]" '{print $3","$5}'

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-09-16
#假如文件为x.xml:
grep -w "<task" x.xml|awk 'BEGIN{ORS=""}{for(i=1;i<NF;i++){if($i ~"id=") print $i;if($i ~"business=") print $i}}'|awk -F\" '{print $2","$4}'


执行结果为:

OPER_FAILCAUSE_TASK_1,OPER_FAILCAUSE


希望对你有所帮助!

第2个回答  2014-09-16
awk '/<task id.*/ {print $0}' xml | awk -F'=|"' '{print $3" "$6}'

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网