免费注册 查看新帖 |

Chinaunix

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

[文本处理] 如何通过 sed 来判断节点, 并删除节点根? [复制链接]

论坛徽章:
2
射手座
日期:2014-10-10 15:59:4715-16赛季CBA联赛之上海
日期:2016-03-03 10:27:14
81 [报告]
发表于 2013-03-10 14:14 |只看该作者
神贴^_^
「」

论坛徽章:
0
82 [报告]
发表于 2013-03-10 14:39 |只看该作者
回复 81# yinyuemi


贴子不神, 都是众位大神给力.!

论坛徽章:
32
处女座
日期:2013-11-20 23:41:20双子座
日期:2014-06-11 17:20:43戌狗
日期:2014-06-16 11:05:00处女座
日期:2014-07-22 17:30:47狮子座
日期:2014-07-28 15:38:17金牛座
日期:2014-08-05 16:34:01亥猪
日期:2014-08-18 13:34:25白羊座
日期:2014-09-02 15:03:55金牛座
日期:2014-11-10 10:23:58处女座
日期:2014-12-02 09:17:52程序设计版块每日发帖之星
日期:2015-06-16 22:20:002015亚冠之塔什干火车头
日期:2015-06-20 23:28:22
83 [报告]
发表于 2013-03-10 17:01 |只看该作者
我写了个awk的:
  1. awk -v t="<string>ASSIGN_WORD</string>" '/<dict>/{m++;if(s~t)next;if(s)print s;s=$0;next}/<\/dict>/{m--;if(m==k){s="";next}}s{s=s"\n"$0;if(s~t)if(!n++)k=m-1;next}1'
复制代码
下面是测试:
  1. [root@localhost ~]# cat i
  2. <dict>
  3.         <array>
  4.                 <dict>
  5.                         <key></key>
  6.                         <string>1</string>
  7.                         <dict>
  8.                                 <key></key>
  9.                                 <string>2</string>
  10.                                 <dict>
  11.                                         <key></key>
  12.                                         <string>3</string>
  13.                                         <dict>
  14.                                                 <key></key>
  15.                                                 <string>4</string>
  16.                                         </dict>
  17.                                 </dict>
  18.                         </dict>
  19.                 </dict>
  20.         </array>
  21. </dict>
  22. [root@localhost ~]# awk -v t="<string>1</string>" '/<dict>/{m++;if(s~t)next;if(s)print s;s=$0;next}/<\/dict>/{m--;if(m==k){s="";next}}s{s=s"\n"$0;if(s~t)if(!n++)k=m-1;next}1' i
  23. <dict>
  24.         <array>
  25.         </array>
  26. </dict>
  27. [root@localhost ~]# awk -v t="<string>2</string>" '/<dict>/{m++;if(s~t)next;if(s)print s;s=$0;next}/<\/dict>/{m--;if(m==k){s="";next}}s{s=s"\n"$0;if(s~t)if(!n++)k=m-1;next}1' i
  28. <dict>
  29.         <array>
  30.                 <dict>
  31.                         <key></key>
  32.                         <string>1</string>
  33.                 </dict>
  34.         </array>
  35. </dict>
  36. [root@localhost ~]# awk -v t="<string>3</string>" '/<dict>/{m++;if(s~t)next;if(s)print s;s=$0;next}/<\/dict>/{m--;if(m==k){s="";next}}s{s=s"\n"$0;if(s~t)if(!n++)k=m-1;next}1' i
  37. <dict>
  38.         <array>
  39.                 <dict>
  40.                         <key></key>
  41.                         <string>1</string>
  42.                         <dict>
  43.                                 <key></key>
  44.                                 <string>2</string>
  45.                         </dict>
  46.                 </dict>
  47.         </array>
  48. </dict>
  49. [root@localhost ~]# awk -v t="<string>4</string>" '/<dict>/{m++;if(s~t)next;if(s)print s;s=$0;next}/<\/dict>/{m--;if(m==k){s="";next}}s{s=s"\n"$0;if(s~t)if(!n++)k=m-1;next}1' i
  50. <dict>
  51.         <array>
  52.                 <dict>
  53.                         <key></key>
  54.                         <string>1</string>
  55.                         <dict>
  56.                                 <key></key>
  57.                                 <string>2</string>
  58.                                 <dict>
  59.                                         <key></key>
  60.                                         <string>3</string>
  61.                                 </dict>
  62.                         </dict>
  63.                 </dict>
  64.         </array>
  65. </dict>
  66. [root@localhost ~]#
复制代码

论坛徽章:
0
84 [报告]
发表于 2013-03-10 19:19 |只看该作者
回复 83# yestreenstars


    太好了, 正想在找些其他方式来处理...多几手准备, 呵.

论坛徽章:
2
射手座
日期:2014-10-10 15:59:4715-16赛季CBA联赛之上海
日期:2016-03-03 10:27:14
85 [报告]
发表于 2013-03-10 20:05 |只看该作者
回复 84# letunix


    试着用python或其它语言的专门解析XML的模块吧,效率更高,而且不容易出错

论坛徽章:
0
86 [报告]
发表于 2013-03-10 20:06 |只看该作者
回复 85# yinyuemi


    嗯, 在考虑, 主要是用在手机上, 尽量少添加依赖....
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP