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
就输出这两个值,谢谢!!!
展开
 我来答
百度网友5311d79
推荐于2017-09-17 · TA获得超过1.9万个赞
知道大有可为答主
回答量:6356
采纳率:71%
帮助的人:3199万
展开全部
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}'
Linyar
2014-09-16 · TA获得超过757个赞
知道小有建树答主
回答量:180
采纳率:100%
帮助的人:243万
展开全部
#假如文件为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


希望对你有所帮助!

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
线质懂3
2014-09-16 · 超过18用户采纳过TA的回答
知道答主
回答量:64
采纳率:0%
帮助的人:33.4万
展开全部
awk '/<task id.*/ {print $0}' xml | awk -F'=|"' '{print $3" "$6}'
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式