免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4326 | 回复: 3
打印 上一主题 下一主题

[文本处理] shell如何提取xml中字段 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2015-12-25 13:31 |只看该作者 |倒序浏览
比如:
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <issues type="array">
  3.   <issue>
  4.     <id>4947</id>
  5.     <project name="你好" id="2"/>
  6.     <priority name="高优先级" id="4"/>
  7.     <assigned_to name="张三" id="1215"/>
  8.     <created_on>Thu Dec 24 16:33:00 +0800 2015</created_on>
  9.     <updated_on>Thu Dec 24 16:38:13 +0800 2015</updated_on>
  10.   </issue>

  11.   <issue>
  12.     <id>4948</id>
  13.     <project name="我好" id="2"/>
  14.     <priority name="低优先级" id="4"/>
  15.     <assigned_to name="李四" id="1215"/>
  16.     <created_on>Thu Dec 25 16:33:00 +0800 2015</created_on>
  17.     <updated_on>Thu Dec 25 16:38:13 +0800 2015</updated_on>
  18.   </issue>

  19.   <issue>
  20.     <id>4949</id>
  21.     <project name="大家好" id="2"/>
  22.     <priority name="高优先级" id="4"/>
  23.     <assigned_to name="王麻子" id="1215"/>
  24.     <created_on>Thu Dec 26 16:33:00 +0800 2015</created_on>
  25.     <updated_on>Thu Dec 26 16:38:13 +0800 2015</updated_on>
  26.   </issue>
  27. </issues>
复制代码
我期望提取出,如何实现呢:
  1. 4947        你好        张三
  2. 4948        我好        李四
  3. 4949        大家好        王麻子
复制代码

论坛徽章:
54
2015亚冠之德黑兰石油
日期:2015-07-07 13:00:1615-16赛季CBA联赛之深圳
日期:2016-03-31 09:03:5415-16赛季CBA联赛之辽宁
日期:2016-05-09 20:38:15程序设计版块每日发帖之星
日期:2016-05-12 06:20:0015-16赛季CBA联赛之四川
日期:2016-05-13 15:19:4715-16赛季CBA联赛之福建
日期:2016-05-15 20:24:34每日论坛发贴之星
日期:2016-05-16 06:20:0015-16赛季CBA联赛之吉林
日期:2016-05-26 11:49:4715-16赛季CBA联赛之广东
日期:2016-05-26 13:49:18极客徽章
日期:2016-12-07 14:05:2315-16赛季CBA联赛之广夏
日期:2016-12-20 17:33:532017金鸡报晓
日期:2017-01-10 15:19:56
2 [报告]
发表于 2015-12-25 14:19 |只看该作者
  1. awk -F'[<>"]' '/id>|project|assigned/{printf ++c%3 ? $3" " : $3"\n"}' b
  2. 4947 你好 张三
  3. 4948 我好 李四
  4. 4949 大家好 王麻子
复制代码

论坛徽章:
20
卯兔
日期:2015-01-26 22:05:142015亚冠之萨济拖拉机
日期:2015-09-10 15:15:282015亚冠之阿尔希拉尔
日期:2015-09-25 17:37:53程序设计版块每日发帖之星
日期:2015-10-03 06:20:00程序设计版块每日发帖之星
日期:2015-12-09 06:20:00CU十四周年纪念徽章
日期:2015-12-17 09:07:15程序设计版块每日发帖之星
日期:2015-12-25 06:20:34程序设计版块每日发帖之星
日期:2015-12-25 06:20:34程序设计版块每日发帖之星
日期:2015-12-25 06:20:342015亚冠之广州富力
日期:2015-08-27 19:29:56每日论坛发贴之星
日期:2015-08-26 06:20:002015亚冠之阿尔希拉尔
日期:2015-05-18 17:26:27
3 [报告]
发表于 2015-12-25 14:23 |只看该作者
回复 1# linlone
  1. sed -nr '/<issue>/,/<\/issue>/{H;//{x;s#.*<id>([^<]*).*<project name="([^"]*).*<assigned_to name="([^"]*).*#\1 \2 \3#p}}' file
  2. 4947 你好 张三
  3. 4948 我好 李四
  4. 4949 大家好 王麻子
复制代码

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
4 [报告]
发表于 2015-12-25 22:47 |只看该作者
回复 1# linlone


    xmlstarlet sel -t -m "//issue" -c "concat(./id/text(), '  ', ./project/@name, '  ', ./assigned_to/@name)" -n file.xml
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP