免费注册 查看新帖 |

Chinaunix

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

[文本处理] 求助!xml 嵌套注释的剔除问题 [复制链接]

论坛徽章:
2
2015亚冠之德黑兰石油
日期:2015-05-26 13:52:28程序设计版块每日发帖之星
日期:2015-06-09 22:20:00
发表于 2015-06-04 21:23 |显示全部楼层
本帖最后由 raps 于 2015-06-05 13:17 编辑

如题,请问如何在“有嵌套”的情况下,正确替换掉 xml 中的所有注释。
  1. <a>
  2. <!--
  3.     <b></b>
  4. <!--
  5.         <c>
  6.               -->
  7.          <e></e>
  8.               <!--
  9.         </c>
  10. -->
  11.     <d></d>
  12. -->
  13. </a>

  14. <e></e>

  15. <!--
  16.     <f></f>
  17. <!--
  18.         <g></g>
  19. -->
  20.     <h></h>
  21. -->
  22.     <i></i>
复制代码
只要 <a></a> <e></e> <i></i>


如何反过来只提取“注释”中的内容?

  1. <a str="1">
  2. <!--
  3.     <b></b>
  4. <!--
  5.         <c>
  6.               -->
  7.          <e></e>
  8.               <!--
  9.         </c>
  10. -->
  11.     <d></d>
  12. -->
  13. </a>

  14. <e></e>

复制代码
获得提取注释得到
  1. <!--
  2.     <b></b>
  3. <!--
  4.         <c>
  5.               -->
  6.          <e></e>
  7.               <!--
  8.         </c>
  9. -->
  10.     <d></d>
  11. -->
复制代码

论坛徽章:
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
发表于 2015-06-04 21:45 |显示全部楼层
回复 1# raps
请提供测试文本,结果,说明需求。。。。。

论坛徽章:
2
2015亚冠之德黑兰石油
日期:2015-05-26 13:52:28程序设计版块每日发帖之星
日期:2015-06-09 22:20:00
发表于 2015-06-05 09:29 |显示全部楼层
本帖最后由 raps 于 2015-06-05 09:51 编辑

回复 2# songyc_2015 [code]<a></a>
    已更新

论坛徽章:
0
发表于 2015-06-05 09:36 |显示全部楼层
回复 3# raps
  1. awk '/<!--/{i++}/-->/{i--}!i&&!/-->/&&!/^$/'
复制代码

论坛徽章:
2
2015亚冠之德黑兰石油
日期:2015-05-26 13:52:28程序设计版块每日发帖之星
日期:2015-06-09 22:20:00
发表于 2015-06-05 09:52 |显示全部楼层
回复 4# liuyu85


    感谢指点,这个太棒了。

论坛徽章:
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
发表于 2015-06-05 12:05 |显示全部楼层
  1. sed -n '
  2. /<!--/{
  3.     x;s#^#.#;x
  4. }
  5. /-->/{
  6.     x;s#.##;x
  7. }
  8. /<!--/!{
  9.     /-->/!{
  10.         x;/^$/{
  11.             x;/^$/!p;b
  12.         }
  13.         x
  14.     }
  15. }
  16. ' file
  17. 结果:
  18. <a>
  19. </a>
  20. <e></e>
  21.        <i></i>
复制代码
回复 1# raps


   

论坛徽章:
2
2015亚冠之德黑兰石油
日期:2015-05-26 13:52:28程序设计版块每日发帖之星
日期:2015-06-09 22:20:00
发表于 2015-06-05 12:58 |显示全部楼层
回复 4# liuyu85


    请问反过来呢?就是考虑有嵌套的情况下,只获得 注释中 的内容

论坛徽章:
0
发表于 2015-06-05 13:09 |显示全部楼层
回复 7# raps
  1. awk '/<!--/{i++}/-->/{i--}i&&!/--/&&!/^$/'
复制代码

论坛徽章:
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
发表于 2015-06-05 13:13 |显示全部楼层
本帖最后由 songyc_2015 于 2015-06-05 13:15 编辑

回复 7# raps
1.sed -n '
/<!--/{
    x;s#^#.#;x
}
/-->/{
    x;s#.##;x
}
/<!--/!{
    /-->/!{
        x;/^$/!{
            x;/^$/!p;b
        }
        x
    }
}
' file
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP