免费注册 查看新帖 |

Chinaunix

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

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

论坛徽章:
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
61 [报告]
发表于 2013-03-09 21:31 |只看该作者
回复 58# letunix


    要理解你的意思比做文本处理还难 你还是用原文件说明吧~

论坛徽章:
0
62 [报告]
发表于 2013-03-09 21:40 |只看该作者
回复 59# yestreenstars


这种复杂的处理方式, 除了 sed 还有没有更方便的?

论坛徽章:
0
63 [报告]
发表于 2013-03-09 21:51 |只看该作者
本帖最后由 letunix 于 2013-03-09 21:58 编辑

回复 60# letunix


这样的树, 能不能做到想删除哪个节点就删除哪个节点?从蓝色区域开始.
<dict>
        <array>
                <dict>
                        <key></key>
                        <string>第一个</string>
                        <dict>
                                <key></key>
                                <string>第二个</string>
                                <dict>
                                        <key></key>
                                        <string>第三个</string>
                                        <dict>
                                            <key></key>
                                            <string>第四个</string>
                                        </dict>
                                </dict>
                        </dict>
                </dict>

        </array>
</dict>

比如 string 为第一个, 则删除全部,
为第二个, 保留第一个, 全部删除, 以此类推...
为第三个, 保留, 第一, 第二个.

论坛徽章:
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
64 [报告]
发表于 2013-03-09 22:03 |只看该作者
回复 63# letunix


    删除的条件是什么?

论坛徽章:
0
65 [报告]
发表于 2013-03-09 22:06 |只看该作者
本帖最后由 letunix 于 2013-03-09 22:06 编辑

回复 64# yestreenstars

原xml:
<dict>
        <array>
                <dict>
                        <key></key>
                        <string>第一个</string>
                        <dict>
                                <key></key>
                                <string>第二个</string>
                                <dict>
                                        <key></key>
                                        <string>第三个</string>
                                        <dict>
                                            <key></key>
                                            <string>第四个</string>
                                        </dict>
                                </dict>
                        </dict>
                </dict>
        </array>
</dict>


几个例子吧:都是判断 string, 方法跟我们今天聊的都一样.
string 为第一个
<dict>
        <array>

        </array>
</dict>

string 为第二个
<dict>
        <array>
                <dict>
                        <key></key>
                        <string>第一个</string>
                </dict>
        </array>
</dict>

string 第三个
<dict>
        <array>
                <dict>
                        <key></key>
                        <string>第一个</string>
                        <dict>
                                <key></key>
                                <string>第二个</string>
                        </dict>
                </dict>
        </array>
</dict>

以此类推, 第三后面可能还会在有第四, 第五第六.

论坛徽章:
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
66 [报告]
发表于 2013-03-09 22:14 |只看该作者
回复 65# letunix


    你最好把你完整的源文件发给我,我看一下有没有特例情况~我先去洗个澡~洗完再回来帮你看~

论坛徽章:
0
67 [报告]
发表于 2013-03-09 22:26 |只看该作者
本帖最后由 letunix 于 2013-03-09 22:37 编辑

附件来了, 你看看...有说明.. Desktop.zip (3.27 KB, 下载次数: 4)

论坛徽章:
0
68 [报告]
发表于 2013-03-09 22:37 |只看该作者
回复 66# yestreenstars


    附件已传...你看看.

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

回复 68# letunix
  1. sed ':1 N; $!b1
  2. s#<string>STRING_YOU_WANT_TO_REMOVE</string>#<<&>>#;
  3. :2
  4. s#/[^<]*<<<#<<<#;
  5. s#<[^/<]*<<<#<<#;
  6. s#>>>[^><]*<[^/>]*>#>>>>#;
  7. s#>>>[^><]*</[^>]*#>#;
  8. t2
  9. s/<<.*>>//' YOUR_FILE
复制代码

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


    论坛热心的朋友还是很多...
{:3_200:}
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP