shell脚本读取xml文件,输出指定截取字段!!!
<?xmlversion="1.0"encoding="UTF-8"standalone="yes"?><tasksxmlns:xsi="http://www.w3.or...
<?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
就输出这两个值,谢谢!!! 展开
<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}'
展开全部
#假如文件为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
希望对你有所帮助!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
awk '/<task id.*/ {print $0}' xml | awk -F'=|"' '{print $3" "$6}'
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询