免费注册 查看新帖 |

Chinaunix

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

字符串提取的问题,请教请教! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-07-15 16:48 |只看该作者 |倒序浏览
<?xml version="1.0" encoding="utf-8"?><!--Current Version:V01R10--><GetOrderNo><Export><ResultData><SpareNo>9136895380001</SpareNo></ResultData><Message><ErrorCode>0</ErrorCode><ErrorMsg>Sucess</ErrorMsg></Message></Export></GetOrderNo>

根据不同属性提出属性的值,如根据</SpareNo>可以获取9136895380001
<SpareNo>9136895380001</SpareNo>

论坛徽章:
0
2 [报告]
发表于 2011-07-15 17:05 |只看该作者
回复 1# yangfan_work

[root@mylinux tmp]# key=SpareNo
[root@mylinux tmp]# awk -F "($key>)|(</$key)" '{print $2}' file1
9136895380001

论坛徽章:
0
3 [报告]
发表于 2011-07-15 17:19 |只看该作者
  多谢多谢

论坛徽章:
0
4 [报告]
发表于 2011-07-15 17:25 |只看该作者
str='<?xml version="1.0" encoding="utf-8"?><!--Current Version:V01R10--><GetOrderNo><Export><ResultData><SpareNo>9136895380001</SpareNo></ResultData><Message><ErrorCode>0</ErrorCode><ErrorMsg>Sucess</ErrorMsg></Message></Export></GetOrderNo>'
sss=${str#*SpareNo>}
echo ${sss%</SpareNo*}

论坛徽章:
0
5 [报告]
发表于 2011-07-15 17:29 |只看该作者
sed 's#.*<SpareNo>##;s#</SpareNo.*##'

论坛徽章:
0
6 [报告]
发表于 2011-07-15 18:36 |只看该作者
2楼和5楼的前提是文件只有一行

论坛徽章:
0
7 [报告]
发表于 2011-07-15 22:35 |只看该作者
额。。。你咋一连发了俩贴啊,呵呵
  1. xiabao@6P9SN2X ~/test$ var=SpareNo
  2. xiabao@6P9SN2X ~/test$ grep -Po "(?<=<$var>)(.*)(?=</$var>)" urfile
  3. 9136895380001
复制代码

论坛徽章:
0
8 [报告]
发表于 2011-07-19 16:11 |只看该作者
回复 6# hyq5436


    恩,是的,如果在多行情况下,该属性有多个,那表达式就没法满足了:

论坛徽章:
0
9 [报告]
发表于 2011-07-19 16:17 |只看该作者
回复 7# xiaopan3322


    呵呵,一不小心的事

论坛徽章:
0
10 [报告]
发表于 2011-07-19 16:41 |只看该作者
感谢大家提供的方案,可能跟文件的特殊性有关,我自己用如下方案搞定了
cat FileName |  grep -o -E '<SpareNo>[0-9]+</SpareNo>' | awk -F '<SpareNo>' '{print $2}' | awk -F '<' '{print $1}
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP