免费注册 查看新帖 |

Chinaunix

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

[文本处理] Shell解析XML文件的问题,请高手帮忙,多谢啦。 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2016-06-27 16:09 |只看该作者 |倒序浏览
xml文件内容:
  1. <server>
  2.     <name>pasm</name>
  3.     <ssl>
  4.       <enabled>false</enabled>
  5.       <login-timeout-millis>25000</login-timeout-millis>
  6.     </ssl>
  7.     <max-open-sock-count>10000</max-open-sock-count>
  8.     <stuck-thread-max-time>1200</stuck-thread-max-time>
  9.     <machine>bomcapp1_132.21</machine>
  10.     <listen-port>58055</listen-port>
  11.     <cluster xsi:nil="true"></cluster>
  12.     <listen-address>10.120.136.21</listen-address>
  13.     <server-start>
  14.       <arguments>-Xms4096m -Xmx4096m -XX:PermSize=128M -XX:MaxPermSize=256m -XX:+HeapDumpOnOutOfMemoryError -Dweblogic.threadpool.MaxPoolSize=2000 -Dweblogic.threadpool.MinPoolSize=500</arguments>
  15.     </server-start>
  16.     <staging-mode>external_stage</staging-mode>
  17.     <data-source>
  18.       <rmi-jdbc-security>Compatibility</rmi-jdbc-security>
  19.     </data-source>
  20.   </server>
  21.   <server>
  22.     <name>KMBasePlat</name>
  23.     <ssl>
  24.       <enabled>false</enabled>
  25.       <login-timeout-millis>25000</login-timeout-millis>
  26.     </ssl>
  27.     <max-open-sock-count>10000</max-open-sock-count>
  28.     <stuck-thread-max-time>1200</stuck-thread-max-time>
  29.     <machine>bomcapp2_133.22</machine>
  30.     <listen-port>58090</listen-port>
  31.     <cluster xsi:nil="true"></cluster>
  32.     <listen-address>10.120.136.22</listen-address>
  33.     <server-start>
  34.       <arguments>-Xms2048m -Xmx2048m -XX:PermSize=128M -XX:MaxPermSize=512m -Djava.awt.headless=true -XX:+HeapDumpOnOutOfMemoryError -Dweblogic.threadpool.MaxPoolSize=500 -Dweblogic.threadpool.MinPoolSize=250</arguments>
  35.     </server-start>
  36.     <staging-mode>external_stage</staging-mode>
  37.     <data-source>
  38.       <rmi-jdbc-security>Compatibility</rmi-jdbc-security>
  39.     </data-source>
  40.   </server>
  41.   <server>
  42.     <name>report</name>
  43.     <jms-thread-pool-size>0</jms-thread-pool-size>
  44.     <ssl>
  45.       <enabled>false</enabled>
  46.       <login-timeout-millis>25000</login-timeout-millis>
  47.     </ssl>
  48.     <log>
  49.       <rotation-type>byTime</rotation-type>
  50.       <number-of-files-limited>true</number-of-files-limited>
  51.       <memory-buffer-severity>Debug</memory-buffer-severity>
  52.     </log>
  53.     <max-open-sock-count>10000</max-open-sock-count>
  54.     <stuck-thread-max-time>1200</stuck-thread-max-time>
  55.     <stuck-thread-timer-interval>600</stuck-thread-timer-interval>
  56.     <machine>bomcser2_132.14</machine>
  57.     <listen-port>58100</listen-port>
  58.     <cluster xsi:nil="true"></cluster>
  59.     <web-server>
  60.       <web-server-log>
  61.         <rotation-type>byTime</rotation-type>
  62.         <number-of-files-limited>true</number-of-files-limited>
  63.       </web-server-log>
  64.     </web-server>
  65.     <listen-address>10.120.136.14</listen-address>
  66.     <administration-port>9003</administration-port>
  67.     <xml-registry xsi:nil="true"></xml-registry>
  68.     <xml-entity-cache xsi:nil="true"></xml-entity-cache>
  69.     <server-start>
  70.       <arguments>-Xms2048m -Xmx2048m -Duser.timezone=Asia/Shanghai -XX:PermSize=256m -XX:MaxPermSize=512m -Djava.io.tmpdir=/node2/Project/report/XML/tmp -Djava.awt.headless=true -Dweblogic.threadpool.MaxPoolSize=500 -Dweblogic.threadpool.MinPoolSize=100</arguments>
  71.       <username>weblogic</username>
  72.       <password-encrypted>{AES}DFiMkCo4T9jWt3Yz6wSgNgia/urcNCetGyLQj2HYeMk=</password-encrypted>
  73.     </server-start>
  74.     <staging-directory-name>/node2/WebLogic/user_projects/domains/BOMC/servers/report/stage</staging-directory-name>
  75.     <staging-mode>external_stage</staging-mode>
  76.     <default-file-store>
  77.       <max-file-size>9223372036854775806</max-file-size>
  78.     </default-file-store>
  79.     <overload-protection>
  80.       <server-failure-trigger>
  81.         <max-stuck-thread-time>1200</max-stuck-thread-time>
  82.         <stuck-thread-count>0</stuck-thread-count>
  83.       </server-failure-trigger>
  84.     </overload-protection>
  85.     <transaction-log-jdbc-store>
  86.       <enabled>false</enabled>
  87.     </transaction-log-jdbc-store>
  88.     <data-source>
  89.       <data-source-log-file>
  90.         <number-of-files-limited>true</number-of-files-limited>
  91.       </data-source-log-file>
  92.       <rmi-jdbc-security>Compatibility</rmi-jdbc-security>
  93.     </data-source>
  94.   </server>
复制代码
每个<server></server>为一组数据。
我想得到:

ultrabpp:10.120.136.14
report:10.120.136.14

也就是每一组中的name和listen-address中的值。

求高手,多谢啦。

论坛徽章:
5
金牛座
日期:2013-10-14 14:40:422015年亚洲杯之伊朗
日期:2015-03-26 10:37:012015亚冠之浦和红钻
日期:2015-10-12 17:47:4115-16赛季CBA联赛之山东
日期:2016-01-20 16:43:1215-16赛季CBA联赛之辽宁
日期:2016-03-29 16:43:59
2 [报告]
发表于 2016-06-27 16:26 |只看该作者
本帖最后由 itfly3 于 2016-06-27 16:27 编辑

# awk -F'[<>]' '/<name>/{name=$3}/<listen-address>/{print name,$3}' t
pasm 10.120.136.21
KMBasePlat 10.120.136.22
report 10.120.136.14

评分

参与人数 1信誉积分 +50 收起 理由
mrj512 + 50 赞一个!

查看全部评分

论坛徽章:
0
3 [报告]
发表于 2016-06-27 16:32 |只看该作者
回复 2# itfly3


    完美实现,多谢啦。

论坛徽章:
28
15-16赛季CBA联赛之八一
日期:2016-02-22 19:10:4215-16赛季CBA联赛之深圳
日期:2016-12-01 10:34:0415-16赛季CBA联赛之新疆
日期:2016-12-07 10:24:2915-16赛季CBA联赛之同曦
日期:2016-12-15 12:06:43CU十四周年纪念徽章
日期:2016-12-18 13:03:4415-16赛季CBA联赛之吉林
日期:2017-01-03 15:52:2515-16赛季CBA联赛之辽宁
日期:2017-01-04 14:58:2415-16赛季CBA联赛之辽宁
日期:2017-01-15 09:42:512016科比退役纪念章
日期:2017-02-06 17:21:50黑曼巴
日期:2017-02-10 15:46:1215-16赛季CBA联赛之上海
日期:2017-03-18 10:14:5415-16赛季CBA联赛之青岛
日期:2017-03-18 22:00:44
4 [报告]
发表于 2016-06-27 16:50 |只看该作者
本帖最后由 moperyblue 于 2016-06-27 19:25 编辑
  1. grep -oP '(?<=<name>|<listen-address>)[^<]*' file|sed 'N;s/\n/: /'
复制代码

论坛徽章:
769
金牛座
日期:2014-02-26 17:49:58水瓶座
日期:2014-02-26 18:10:15白羊座
日期:2014-04-15 19:29:52寅虎
日期:2014-04-17 19:43:21酉鸡
日期:2014-04-19 21:24:10子鼠
日期:2014-04-22 13:55:24卯兔
日期:2014-04-22 14:20:58亥猪
日期:2014-04-22 16:13:09狮子座
日期:2014-05-05 22:31:17摩羯座
日期:2014-05-06 10:32:53处女座
日期:2014-05-12 09:23:11子鼠
日期:2014-05-21 18:21:27
5 [报告]
发表于 2016-06-27 17:06 |只看该作者
回复 1# mrj512

  1. grep -Po "(?<=<name>|<listen-address>)[^<]*" test.xml|sed 'N;s/\n/: /'
  2. pasm: 10.120.136.21
  3. KMBasePlat: 10.120.136.22
  4. report: 10.120.136.14
复制代码

论坛徽章:
0
6 [报告]
发表于 2016-06-27 17:09 |只看该作者
回复 5# Herowinter


    谢谢啦。

不过这么处理会多出一些没用的。也怪我没把XML文件发完整。

执行结果:
  1. [bomc@bomcapp2 config]$ awk -F'[<>]' '/<name>/{name=$3}/<listen-address>/{print name,$3}' config.xml
  2. ultrabpp 10.120.136.14
  3. pasm 10.120.136.21
  4. KMBasePlat 10.120.136.22
  5. report 10.120.136.14
  6. ultrapsms 10.120.136.23
  7. InterfaceUSD 10.120.136.14
  8. InterfaceSMP 10.120.136.14
  9. InterfaceRepo 10.120.136.14
  10. InterfaceEoms 10.120.136.14
  11. IDCPServer 10.120.136.21
  12. OASServer 10.120.136.22
  13. CmdbWebServer 10.120.136.14
  14. NmsWebServer 10.120.136.13
  15. CmdbTo4aHostSync 10.120.136.14
  16. bccs 10.120.136.14
  17. UltraMobile 10.120.136.23
  18. MobileServer 10.120.136.14
  19. ultrareport 10.120.136.13
  20. dirtoryprobe 10.120.136.14
  21. bomcapp1_132.21 10.120.136.21
  22. bomcser2_132.14 10.120.136.14
  23. bomcapp2_133.22 10.120.136.22
  24. bomcapp3_132.23 10.120.136.23
  25. bomcser1_132.13 10.120.136.13
  26. [bomc@bomcapp2 config]$ grep -oP '(?<=<name>)[^<]*|(?<=<listen-address>)[^<]*' config.xml|sed 'N;s/\n/: /'
  27. BOMC: BOMC
  28. AdminServer: ultrabpp
  29. 10.120.136.14: pasm
  30. 10.120.136.21: KMBasePlat
  31. 10.120.136.22: report
  32. 10.120.136.14: ultrapsms
  33. 10.120.136.23: InterfaceUSD
  34. 10.120.136.14: InterfaceSMP
  35. 10.120.136.14: InterfaceRepo
  36. 10.120.136.14: InterfaceEoms
  37. 10.120.136.14: IDCPServer
  38. 10.120.136.21: OASServer
  39. 10.120.136.22: CmdbWebServer
  40. 10.120.136.14: NmsWebServer
  41. 10.120.136.13: CmdbTo4aHostSync
  42. 10.120.136.14: bccs
  43. 10.120.136.14: UltraMobile
  44. 10.120.136.23: MobileServer
  45. 10.120.136.14: ultrareport
  46. 10.120.136.13: dirtoryprobe
  47. 10.120.136.14: BOMC
  48. report: bbs
  49. ultrabpp: ultrapsms
  50. pasm: ucas
  51. KMBasePlat: bomcinter
  52. cqinterface: bomc
  53. smpinterface: BomcSmpInterface
  54. repo: eoms
  55. idcp: oas
  56. cmdb: cmdbcs
  57. CmdbReport: NMS_cmpbaseline
  58. NMS_ipman: NMS_nmsws
  59. NMS_pf: NMS_report
  60. NMS_ultrashow: NMS_nmsw
  61. NMS_nmshelp: bccs
  62. MobileApp: nmsws
  63. ultramobile: upload
  64. ultrareport: operation
  65. bomcapp1_132.21: 10.120.136.21
  66. bomcser2_132.14: 10.120.136.14
  67. bomcapp2_133.22: 10.120.136.22
  68. bomcapp3_132.23: 10.120.136.23
  69. bomcser1_132.13: 10.120.136.13
  70. [bomc@bomcapp2 config]$
复制代码

论坛徽章:
10
天蝎座
日期:2013-09-22 22:32:23程序设计版块每日发帖之星
日期:2016-08-07 06:20:00lufei
日期:2016-06-17 17:38:40程序设计版块每日发帖之星
日期:2016-06-12 06:20:002016科比退役纪念章
日期:2016-05-31 15:47:20CU十四周年纪念徽章
日期:2016-05-27 12:24:562015年亚洲杯之阿曼
日期:2015-05-03 21:01:352015年辞旧岁徽章
日期:2015-03-03 16:54:15天蝎座
日期:2013-10-20 21:05:24程序设计版块每日发帖之星
日期:2016-08-11 06:20:00
7 [报告]
发表于 2016-06-27 17:38 |只看该作者
  1. sed -nr '/<server>/,/<\/server>/{/<name>|<listen-address>/{s/.*<.*>(.*)<.*>/\1/;H;}};${g;s/([^0-9.]*)\n/\1\:/g;p}' myfile
复制代码
回复 1# mrj512


   

论坛徽章:
307
程序设计版块每周发帖之星
日期:2016-04-08 00:41:33操作系统版块每日发帖之星
日期:2015-09-02 06:20:00每日论坛发贴之星
日期:2015-09-02 06:20:00程序设计版块每日发帖之星
日期:2015-09-04 06:20:00每日论坛发贴之星
日期:2015-09-04 06:20:00每周论坛发贴之星
日期:2015-09-06 22:22:00程序设计版块每日发帖之星
日期:2015-09-09 06:20:00程序设计版块每日发帖之星
日期:2015-09-19 06:20:00程序设计版块每日发帖之星
日期:2015-09-20 06:20:00每日论坛发贴之星
日期:2015-09-20 06:20:00程序设计版块每日发帖之星
日期:2015-09-22 06:20:00程序设计版块每日发帖之星
日期:2015-09-24 06:20:00
8 [报告]
发表于 2016-06-27 17:46 |只看该作者
  1. perl -nle 'push(@a,m!(?|<name>([^<>]+)|<listen-address>([^<>]+))!);if(@a==2){print "@a";@a=()}' f
复制代码
pasm 10.120.136.21
KMBasePlat 10.120.136.22
report 10.120.136.14

论坛徽章:
2
射手座
日期:2014-10-10 15:59:4715-16赛季CBA联赛之上海
日期:2016-03-03 10:27:14
9 [报告]
发表于 2016-06-27 21:22 |只看该作者
不用 解释器 解析xml的脚本都会有潜在的bug

论坛徽章:
307
程序设计版块每周发帖之星
日期:2016-04-08 00:41:33操作系统版块每日发帖之星
日期:2015-09-02 06:20:00每日论坛发贴之星
日期:2015-09-02 06:20:00程序设计版块每日发帖之星
日期:2015-09-04 06:20:00每日论坛发贴之星
日期:2015-09-04 06:20:00每周论坛发贴之星
日期:2015-09-06 22:22:00程序设计版块每日发帖之星
日期:2015-09-09 06:20:00程序设计版块每日发帖之星
日期:2015-09-19 06:20:00程序设计版块每日发帖之星
日期:2015-09-20 06:20:00每日论坛发贴之星
日期:2015-09-20 06:20:00程序设计版块每日发帖之星
日期:2015-09-22 06:20:00程序设计版块每日发帖之星
日期:2015-09-24 06:20:00
10 [报告]
发表于 2016-06-27 21:42 |只看该作者
比如说呢?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP