免费注册 查看新帖 |

Chinaunix

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

[文本处理] 求shell处理xml [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-10-16 13:57 |只看该作者 |倒序浏览
求高人指点,如何将如下xml,格式化后变成期望的结果。
  1. <?xml version="1.0"?>
  2. <system>
  3.    <machine name="web01" >
  4.          <server name="log_collect">
  5.             <processes>1</processes>
  6.             <threads>1</threads>
  7.             <options>-t1 </options>
  8.             <desc/>
  9.          </server>
  10.          <server name="dcs_fresh">
  11.             <processes>1</processes>
  12.             <threads>1</threads>
  13.             <options>-a192.168.1.1</options>
  14.             <desc/>
  15.          </server>
  16.    </machine>
  17.    <machine name="web02">
  18.          <server name="log_collect">
  19.             <processes>2</processes>
  20.             <threads>2</threads>
  21.             <options>-t2 </options>
  22.             <desc/>
  23.          </server>
  24.          <server name="dcs_fresh">
  25.             <processes>2</processes>
  26.             <threads>2</threads>
  27.             <options>-a192.168.1.2</options>
  28.             <desc/>
  29.          </server>
  30.    </machine>
复制代码
期望最终结果为(一个serv一行,带有machine、processes、options、threads值):
web01 log_collect 1 1 -t1
web01 dcs_fresh 1 1 -a192.168.1.1
web02 log_collect 2 2 -t2
web02 dcs_fresh 2 2 -a192.168.1.2

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
2 [报告]
发表于 2012-10-16 14:23 |只看该作者
处理xml还是用专门的工具吧。。。
勉强用awk、sed之类的处理也可以,但是下回变了格式,就又不能用了
可以看看这个:http://xml-coreutils.sourceforge.net/

论坛徽章:
0
3 [报告]
发表于 2012-10-16 15:00 |只看该作者
回复 2# 昭襄王
打不开,额,难道在墙外?


   

论坛徽章:
32
处女座
日期:2013-11-20 23:41:20双子座
日期:2014-06-11 17:20:43戌狗
日期:2014-06-16 11:05:00处女座
日期:2014-07-22 17:30:47狮子座
日期:2014-07-28 15:38:17金牛座
日期:2014-08-05 16:34:01亥猪
日期:2014-08-18 13:34:25白羊座
日期:2014-09-02 15:03:55金牛座
日期:2014-11-10 10:23:58处女座
日期:2014-12-02 09:17:52程序设计版块每日发帖之星
日期:2015-06-16 22:20:002015亚冠之塔什干火车头
日期:2015-06-20 23:28:22
4 [报告]
发表于 2012-10-16 15:24 |只看该作者
你看一下这个行不行?
  1. awk 'BEGIN{FS="[<>\"]"}/machine name/{a=$3}/server name/{b=$3}/>.*</{c=c?c" "$3:$3}/<\/server>/{print a" "b" "c;b=0;c=0}' urfile
复制代码

论坛徽章:
0
5 [报告]
发表于 2012-10-16 15:55 |只看该作者
回复 4# yestreenstars
哈哈,感谢,这个思路好,至少我这个场景是适用的,多谢多谢。


   

论坛徽章:
32
处女座
日期:2013-11-20 23:41:20双子座
日期:2014-06-11 17:20:43戌狗
日期:2014-06-16 11:05:00处女座
日期:2014-07-22 17:30:47狮子座
日期:2014-07-28 15:38:17金牛座
日期:2014-08-05 16:34:01亥猪
日期:2014-08-18 13:34:25白羊座
日期:2014-09-02 15:03:55金牛座
日期:2014-11-10 10:23:58处女座
日期:2014-12-02 09:17:52程序设计版块每日发帖之星
日期:2015-06-16 22:20:002015亚冠之塔什干火车头
日期:2015-06-20 23:28:22
6 [报告]
发表于 2012-10-16 16:01 |只看该作者
回复 5# zjdick


    不客气,有用就好。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP