免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2221 | 回复: 9

[文本处理] 这个文本处理用AWK怎么处理 [复制链接]

论坛徽章:
0
发表于 2014-06-16 11:35 |显示全部楼层
怎么提取一个字段到一个字段之间的内容
[20140615 00:29:21]
<languageType>1</languageType><ServiceAttrLst><serviceName>XCALL</serviceName><serviceKey>3</serviceKey><destAddr></destAddr></S
erviceAttrLst></requestInfo>[time=0.84987],[code=0],[desc=Success.])
[20140615 00:29:21]
<languageType>1</languageType><ServiceAttrLst><serviceName>XCALL</serviceName><serviceKey>3</serviceKey><destAddr></destAddr></S
erviceAttrLst></requestInfo>[time=0.84987],[code=0],[desc=Success.])



例如我想提取<ServiceAttrLst> 到 </ServiceAttrLst> 之间的内容 用awk怎么搞
请教各位

论坛徽章:
766
金牛座
日期: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
发表于 2014-06-16 12:10 |显示全部楼层
回复 1# 西厢了个梦
在你的文本里,这个
  1. <languageType>1</languageType><ServiceAttrLst><serviceName>XCALL</serviceName><serviceKey>3</serviceKey><destAddr></destAddr></S
  2. erviceAttrLst></requestInfo>[time=0.84987],[code=0],[desc=Success.])
复制代码
是一行还是两行?我复制下来发现好象是2行。

   

论坛徽章:
39
辰龙
日期:2013-08-21 15:45:192015亚冠之广州富力
日期:2015-05-12 16:34:52亥猪
日期:2015-03-03 17:22:00申猴
日期:2015-03-03 17:21:37未羊
日期:2014-10-10 13:45:41戌狗
日期:2014-06-17 09:53:29巨蟹座
日期:2014-06-12 23:17:17双鱼座
日期:2014-06-10 12:42:44寅虎
日期:2014-06-09 12:52:172015亚冠之卡尔希纳萨夫
日期:2015-05-24 15:24:35黄金圣斗士
日期:2015-12-02 17:25:0815-16赛季CBA联赛之吉林
日期:2017-06-24 16:43:52
发表于 2014-06-16 12:46 |显示全部楼层
回复 2# Herowinter


    目测必须是一行

论坛徽章:
766
金牛座
日期: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
发表于 2014-06-16 12:50 |显示全部楼层
回复 3# 关阴月飞
是啊,不是一行不是自找麻烦吗?
   

论坛徽章:
0
发表于 2014-06-16 14:07 |显示全部楼层
回复 2# Herowinter
是两行  报文出来就这样
如果不是两行又要怎么提取呢 ? 是不是要简单一点。

   

论坛徽章:
0
发表于 2014-06-16 14:20 |显示全部楼层
@西厢了个梦

是要这些东西吗?
  1. [root@GO-EMAIL-1 ~]# awk -F'<ServiceAttrLst>' '{print $2}' URFILE | sed -e '/^$/d' -e 's/<\/S//g'
  2. <serviceName>XCALL</serviceName><serviceKey>3</serviceKey><destAddr></destAddr>
  3. <serviceName>XCALL</serviceName><serviceKey>3</serviceKey><destAddr></destAddr>
复制代码

论坛徽章:
766
金牛座
日期: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
发表于 2014-06-16 14:21 |显示全部楼层
回复 5# 西厢了个梦
如果是两行的话,你另一个帖子里的那些答案
grep awk处理结果应该不对啊,这里硬生生分成
两行太不科学了。

   

论坛徽章:
39
辰龙
日期:2013-08-21 15:45:192015亚冠之广州富力
日期:2015-05-12 16:34:52亥猪
日期:2015-03-03 17:22:00申猴
日期:2015-03-03 17:21:37未羊
日期:2014-10-10 13:45:41戌狗
日期:2014-06-17 09:53:29巨蟹座
日期:2014-06-12 23:17:17双鱼座
日期:2014-06-10 12:42:44寅虎
日期:2014-06-09 12:52:172015亚冠之卡尔希纳萨夫
日期:2015-05-24 15:24:35黄金圣斗士
日期:2015-12-02 17:25:0815-16赛季CBA联赛之吉林
日期:2017-06-24 16:43:52
发表于 2014-06-16 15:04 |显示全部楼层
回复 5# 西厢了个梦


    不是一行的话,先整成一行在处理就好

论坛徽章:
50
15-16赛季CBA联赛之广夏
日期:2018-11-05 09:42:462015年亚冠纪念徽章
日期:2015-07-23 11:58:122015亚冠之广州富力
日期:2015-07-07 08:26:172015亚冠之塔什干棉农
日期:2015-06-29 09:08:072015年亚洲杯之伊朗
日期:2015-03-08 20:51:012015年迎新春徽章
日期:2015-03-04 09:58:11未羊
日期:2014-10-16 22:41:47处女座
日期:2014-10-16 15:33:33酉鸡
日期:2014-03-13 12:54:10巳蛇
日期:2014-03-10 14:39:052015亚冠之德黑兰石油
日期:2015-07-29 12:46:372015亚冠之德黑兰石油
日期:2015-08-07 12:54:11
发表于 2014-06-16 15:12 |显示全部楼层
  1. awk -vRS='<ServiceAttrLst>' '/<\/S\n*erviceAttrLst>/{gsub(/<\/S\n*erviceAttrLst>.*/,"");print}'
复制代码

论坛徽章:
7
天秤座
日期:2014-08-07 13:56:30丑牛
日期:2014-08-27 20:34:21双鱼座
日期:2014-08-27 22:02:21天秤座
日期:2014-08-30 10:39:11双鱼座
日期:2014-09-21 20:07:532015年亚洲杯之日本
日期:2015-02-06 14:00:282015亚冠之大阪钢巴
日期:2015-11-02 14:50:19
发表于 2014-06-16 19:41 |显示全部楼层
  1. cat urfile | sed '/languageType/ N;s/\n//g' | grep -Po "(?<=<ServiceAttrLst>).*(?=</ServiceAttrLst>)"   
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP