免费注册 查看新帖 |

Chinaunix

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

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

论坛徽章:
0
71 [报告]
发表于 2013-03-09 23:31 |只看该作者
回复 70# letunix


    ok了?

论坛徽章:
0
72 [报告]
发表于 2013-03-09 23:44 |只看该作者
回复 71# hbmhalley


嗯, 所想要的结果实现了, 通用性很强...不过删除后, 有个空行...应该不影响吧....

论坛徽章:
0
73 [报告]
发表于 2013-03-09 23:57 |只看该作者
本帖最后由 hbmhalley 于 2013-03-10 00:08 编辑

回复 72# letunix


    那就把最后一行改成
  1. s# *<<.*>>\n##
复制代码
其实还有个问题
    <dict>
    ...<string>xxx</string>...
    </dict>
    <dict>
    ...<string>xxx</string>...
    </dict>
    这样只能删一个
    改成这样
  1. sed ':1 N; $!b1
  2. :3
  3. \#<string>XXXSTRING</string>#!b
  4. s##<<&>>#;
  5. :2
  6. s#/[^<]*<<<#<<<#;
  7. s#<[^/<]*<<<#<<#;
  8. s#>>>[^><]*<[^/>]*>#>>>>#;
  9. s#>>>[^><]*</[^>]*#>#;
  10. t2
  11. s/ *<<.*>>\n\?//
  12. b3' URFILE
复制代码

论坛徽章:
0
74 [报告]
发表于 2013-03-10 00:16 |只看该作者
回复 73# hbmhalley


    太感谢了, 大晚上了还要麻烦您...

论坛徽章:
0
75 [报告]
发表于 2013-03-10 00:27 |只看该作者
本帖最后由 letunix 于 2013-03-10 00:32 编辑

回复 73# hbmhalley


嗯就是把换行给去除, 空格/缩进符还是在的, 应该换成整行的删除,
大体还都实现了, 不过在美化方面就不能太强求了...呵呵...只要不影响软件读写该文件就成.

谢谢了...

论坛徽章:
0
76 [报告]
发表于 2013-03-10 00:42 |只看该作者
回复 73# hbmhalley


    不过子节点过多, 好象处理不来...
    明天有空你看看....

Source.rar (2.05 KB, 下载次数: 9)

删除子节点为 <string>ConferenceRegistrationSettings</string> 你试试看看..

论坛徽章:
0
77 [报告]
发表于 2013-03-10 10:20 |只看该作者
回复 76# letunix


    怎么这么多空字符 ..
  1. tr -d \\000 <Source.xml | sed ':1
  2. N; $!b1
  3. :3
  4. \#<string>ConferenceRegistrationSettings</string>#!b
  5. s##<<&>>#;
  6. :2
  7. s#/[^<]*<<<#<<<#;
  8. s#<[^/<]*<<<#<<#;
  9. s#>>>[^><]*<[^/>]*>#>>>>#;
  10. s#>>>[^><]*</[^>]*#>#;
  11. t2
  12. s/ *<<.*>>\n\?//
  13. b3
  14. '
复制代码
result.tar (20 KB, 下载次数: 2)

    对么?

论坛徽章:
0
78 [报告]
发表于 2013-03-10 11:30 |只看该作者
回复 77# hbmhalley


    跟我运行的一样, 350 行那里.
都是以 <dict> 开头到 </dict> 结尾. 现在就删除了一半...

论坛徽章:
0
79 [报告]
发表于 2013-03-10 11:48 |只看该作者
本帖最后由 hbmhalley 于 2013-03-10 11:59 编辑

回复 78# letunix


    没考虑自闭合的标签 .. 改成这样试试错了 一等...没错 用吧
  1. sed ':1
  2. N; $!b1
  3. :3
  4. \#<string>ConferenceRegistrationSettings</string>#!b
  5. s##<<&>>#;
  6. :2
  7. s#<\?/[^<]*<<<#<<<<#;
  8. s#<[^/<]*<<<#<<#;
  9. s#>>>[^><]*<[^/>]\+>\?#>>>>#;
  10. s#>>>[^><]*<\?/[^>]*#>#;
  11. t2
  12. s/\t*<<.*>>\n\?//
  13. b3'
复制代码

论坛徽章:
0
80 [报告]
发表于 2013-03-10 12:11 |只看该作者
本帖最后由 letunix 于 2013-03-10 12:13 编辑

回复 79# hbmhalley

可以了...嘎嘎.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP