免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: ABrthur
打印 上一主题 下一主题

[文本处理] 不知道怎么才能提取出xml里的值 [复制链接]

论坛徽章:
1
15-16赛季CBA联赛之佛山
日期:2016-04-20 15:50:45
11 [报告]
发表于 2015-08-26 17:43 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
12 [报告]
发表于 2015-08-26 18:01 |只看该作者
大致思路有了,很简陋,不过实现了 谢谢大家
a=`cat file`
b=`echo ${a#*/AvgData>}`
c=`echo ${b%</BandWidthData>}`
echo $c|sed 's/<\/Traffice>/<\/Traffice>\n/g'|sed 's/[^"]*"//;s/">/,/;s/<.*//'

2015-08-01 00:00,754927491
2015-08-01 00:05,742470087
2015-08-01 00:10,712142313

论坛徽章:
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
13 [报告]
发表于 2015-08-26 20:46 |只看该作者
回复 1# ABrthur
  1. awk '{while(match($0,/"([^"]+)">([^<]+)</,a)>0){print a[1]","a[2];$0=substr($0,a[2,"start"]+a[n, "length"]+1)}}' file
复制代码

论坛徽章:
0
14 [报告]
发表于 2015-08-27 00:58 |只看该作者
本帖最后由 internethehe 于 2015-08-27 02:23 编辑
  1. sed 's/[^"]*"//;s/">/,/;s/<.*//' file
复制代码
sed 's/[^"]*"//‘这里不太明白,匹配非引号"的任意字符 直到出现第一个引号“ 替换    也就是不是引号的东西到引号替换为空?

我试了一下如果sed 's/[^=]*"//' file
我理解应该是非等号的东西到引号”替换为空
应该是这块的 time="2014中的=“  也就是什么都没替换

可结果是这样
  1. <Trafficetime=>90337312</Traffice>
  2. <Trafficetime=>89263923</Traffice>
复制代码
回复 2# hjfeng1988


   

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

回复 14# internethehe
  <Traffice time="2014-12-16 00:05">90337312</Traffice>
多个非=字符,连接"字符。前面一段匹配失败
第二段从"字符开始,多个非=字符后面这一串都匹配上"2014-12-16 00:10">89263923</Traffice>,但是因为要匹配"字符,所以只匹配到"2014-12-16 00:10"
替换后的结果就是  <Traffice time=>90337312</Traffice>

上网搜索“在线正则表达式测试”

论坛徽章:
25
程序设计版块每日发帖之星
日期:2016-05-03 06:20:0015-16赛季CBA联赛之八一
日期:2018-07-05 10:34:09黑曼巴
日期:2018-07-06 15:19:5015-16赛季CBA联赛之佛山
日期:2018-08-03 13:19:3315-16赛季CBA联赛之山西
日期:2018-08-07 19:46:2315-16赛季CBA联赛之广夏
日期:2018-08-08 19:31:5015-16赛季CBA联赛之青岛
日期:2018-11-26 15:21:5015-16赛季CBA联赛之上海
日期:2018-12-11 09:45:3219周年集字徽章-年
日期:2020-04-18 23:54:5215-16赛季CBA联赛之深圳
日期:2020-04-19 21:40:19黑曼巴
日期:2022-04-03 17:55:1315-16赛季CBA联赛之八一
日期:2018-07-03 16:56:46
16 [报告]
发表于 2015-08-27 15:56 |只看该作者
回复 8# ABrthur
  1. sed 's!</[a-zA-Z]*>!&\n!g' file|sed -nr 's!.*Traffice time="(.*)">([0-9]+)<.*$!\1,\2!p'
复制代码

论坛徽章:
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
17 [报告]
发表于 2015-08-27 16:53 |只看该作者
回复 6# ABrthur

$ xmllint --xpath '/BandWidthData/Traffice' a.xml
<Traffice time="2014-12-16 00:05">90337312</Traffice><Traffice time="2014-12-16 00:10">89263923</Traffice>

$ xmllint --xpath '/BandWidthData/Traffice' a.xml | awk -F'[><=]' '{gsub(/"/,"");for(n=0;n<=NF-5;n+=5){print $(n+3)","$(n+4)}}'
2014-12-16 00:05,90337312
2014-12-16 00:10,89263923

评分

参与人数 2可用积分 +4 信誉积分 +25 收起 理由
ABrthur + 25
MMMIX + 4 很给力!

查看全部评分

论坛徽章:
0
18 [报告]
发表于 2015-08-28 09:45 |只看该作者
真是拨云见日啊

论坛徽章:
0
19 [报告]
发表于 2015-08-29 09:47 |只看该作者
非常感谢,明白了回复 15# hjfeng1988


   

论坛徽章:
22
处女座
日期:2014-10-11 13:33:292015亚冠之塔什干火车头
日期:2015-07-20 19:59:042015亚冠之塔什干火车头
日期:2015-07-26 10:59:31程序设计版块每日发帖之星
日期:2015-08-05 06:20:00每日论坛发贴之星
日期:2015-08-05 06:20:00程序设计版块每日发帖之星
日期:2015-08-07 06:20:00每日论坛发贴之星
日期:2015-08-07 06:20:002015亚冠之阿尔纳斯尔
日期:2015-10-01 15:23:28白银圣斗士
日期:2015-12-07 17:17:06操作系统版块每日发帖之星
日期:2015-12-27 06:20:002015亚冠之广州富力
日期:2015-07-08 15:48:31程序设计版块每日发帖之星
日期:2015-06-11 22:20:00
20 [报告]
发表于 2015-08-29 23:09 |只看该作者
本帖最后由 聆雨淋夜 于 2015-08-29 23:10 编辑

grep -oP '(?<==")[^"]+|(?<=>)[[:digit:]]+' file|sed 'N;s/\n/,/'
2014-12-16 00:05,90337312
2014-12-16 00:10,89263923
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP