免费注册 查看新帖 |

Chinaunix

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

[文本处理] 求助!取特定 xml 标签中的属性值 [复制链接]

论坛徽章:
2
2015亚冠之德黑兰石油
日期:2015-05-26 13:52:28程序设计版块每日发帖之星
日期:2015-06-09 22:20:00
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2015-06-04 21:17 |只看该作者 |倒序浏览
本帖最后由 raps 于 2015-06-05 10:10 编辑

取出 web-app-deploy 标签的 path 值,标签内的空格和换行不确定

  1. <test path="/w3c/sh">     <web-app-deploy
  2.         path="/www/abc"/>
  3. <web-app-deploy        path="/bbs/bcd"/>
  4. <from path="/df/-s"/>
  5. <web-app-deploy
  6.         path="/jpkc/cde" conf="none" />
  7. </test>
复制代码
得到 /www/abc /bbs/bcd /jpkc/cde

能够使用 grep 的 -oP 参数一次得到吗?
原来的想法是:先将 “各种空格 [[:space:]]” 和 “各种换行 \n \r” 一类的全部替换成空格(但不知道怎么实现,只会替换空格

  1. sed 's/[[:space:]]\+/ /g'
复制代码
),然后用

  1.     grep -oP '(?<=web-app-deploy path\=\").*(?=\")'
复制代码
实现。

论坛徽章:
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
2 [报告]
发表于 2015-06-04 21:44 |只看该作者
回复 1# raps
  1. grep -Po '(?<=path=")[^"]*' file
  2. grep -Po '(?<=docBase=")[^"]*' file
复制代码

论坛徽章:
2
2015亚冠之德黑兰石油
日期:2015-05-26 13:52:28程序设计版块每日发帖之星
日期:2015-06-09 22:20:00
3 [报告]
发表于 2015-06-05 09:48 |只看该作者
回复 2# songyc_2015


    抱歉,没有说明白,不是取出所有标签的相同值,而是取出特定标签的某个属性。现已修改代码

论坛徽章:
11
射手座
日期:2015-08-11 16:10:26辰龙
日期:2015-08-11 16:11:11黑曼巴
日期:2016-04-26 16:58:40
4 [报告]
发表于 2015-06-05 10:40 |只看该作者
本帖最后由 hjfeng1988 于 2015-06-05 13:11 编辑

只能帮你到这儿了
  1. [root@66a ~]# sed -rn '/web-app-deploy/{/web-app-deploy$/N;s/.*path="(.*)".*/\1/g;p}' file
  2. /www/abc
  3. /bbs/bcd
  4. /jpkc/cde" conf="none
复制代码
参考了680大神
  1. [root@66a ~]# sed -rn '/web-app-deploy/{/web-app-deploy$/N;s/.*path="([^"]+)".*/\1/g;p}' file
  2. /www/abc
  3. /bbs/bcd
  4. /jpkc/cde
复制代码

论坛徽章:
0
5 [报告]
发表于 2015-06-05 10:58 |只看该作者
本帖最后由 liuyu85 于 2015-06-05 10:59 编辑
  1. awk 'BEGIN{RS="<";ORS=" "}/web-app-deploy.*path=/{sub(/.*path="/,"");sub(/".*/,"");print}'
复制代码
写的有点烂,凑合着能用

论坛徽章:
1
2015亚冠之鹿岛鹿角
日期:2015-05-12 13:04:44
6 [报告]
发表于 2015-06-05 10:58 |只看该作者
  1. awk -vRS='<web-app-deploy' -vFS='"+' 'NR>1{print $2}' files
复制代码

论坛徽章:
145
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
7 [报告]
发表于 2015-06-05 12:00 |只看该作者
本帖最后由 jason680 于 2015-06-05 12:07 编辑

回复 1# raps

$ cat FILE
<test path="/w3c/sh">     <web-app-deploy
        path="/www/abc"/>
<web-app-deploy        path="/bbs/bcd"/>
<from path="/df/-s"/>
<web-app-deploy
        path="/jpkc/cde" conf="none" />
</test>

$ awk -vRS="/>" '{$1=$1;if(match($0,/<web-app-deploy path="([^"]+)"/,a))print a[1]}' FILE
/www/abc
/bbs/bcd
/jpkc/cde


   

论坛徽章:
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
8 [报告]
发表于 2015-06-05 21:49 |只看该作者
回复 1# raps
  1. $sed -nr '/web-app-deploy/{s#.*<web-app-deploy[^>]*path="([^"]*)"[^>]*\/>#\1#p;t;N;s##\1#p;}' file
  2. /www/abc
  3. /bbs/bcd
  4. /jpkc/cde
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP