免费注册 查看新帖 |

Chinaunix

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

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

论坛徽章:
0
21 [报告]
发表于 2013-03-09 17:09 |显示全部楼层
本帖最后由 letunix 于 2013-03-09 17:18 编辑

回复 25# yestreenstars


    对不起, 我发个完整的 xml 树给你看看..

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
        <dict>
                <array>
                        <dict>
                                <key>abc</key>
                                <string>xxx</string>
                        </dict>


                        <dict>
                                <key>abc</key>
                                <string>xxx</string>
                                <dict>
                                        <string>eee</string>
                                </dict>
                        </dict>


                        <dict>
                                <key>abc</key>
                                <string>xxx</string>
                                <array>
                                        <string>eee</string>
                                </array>
                        </dict>


                        <dict>
                                <key>abc</key>
                                <string>ccc</string>
                                <array>
                                        <string>eee</string>
                                </array>
                        </dict>

                        <dict>
                                <key>abc</key>
                                <string>ccc</string>
                        </dict>
                </array>
        </dict>
</plist>
判断黄色, 删除红色..

论坛徽章:
0
22 [报告]
发表于 2013-03-09 17:33 |显示全部楼层
本帖最后由 letunix 于 2013-03-09 17:33 编辑

回复 35# yestreenstars


    正常, 以我刚刚这种树形状, 是不存在这情况, 最好有两种方案, 一个是删除根节点, 另外就是只删除那个 dict, 文件复杂, 可能要用到.
麻烦你了...

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
        <dict>
                <array>
                        <dict>
                                <key>abc</key>
                                <string>xxx</string>
                        </dict>

                        <dict>
                                <key>abc</key>
                                <string>xxx</string>
                                <dict>
                                        <string>eee</string>
                                </dict>
                        </dict>

                        <dict>
                                <key>abc</key>
                                <string>xxx</string>
                                <array>
                                        <string>eee</string>
                                </array>
                        </dict>

                        <dict>
                                <key>abc</key>
                                <string>ccc</string>
                                <array>
                                        <string>eee</string>
                                </array>
                        </dict>

                        <dict>
                                <key>abc</key>
                                <string>ccc</string>
                        </dict>
                </array>
        </dict>
</plist>



输出的结果是:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
        <dict>
                <array>

                        <dict>
                                <key>abc</key>
                                <string>ccc</string>
                                <array>
                                        <string>eee</string>
                                </array>
                        </dict>

                        <dict>
                                <key>abc</key>
                                <string>ccc</string>
                        </dict>
                </array>
        </dict>
</plist>

论坛徽章:
0
23 [报告]
发表于 2013-03-09 17:35 |显示全部楼层
回复 35# yestreenstars


    总共是有三层 dict, 第一层为根, 不动, 第二层就是我们要删除的, 第三层就是你刚刚说的情况..
    正常情况下, 第三层, 的 string, 不会与第二层的其中一个 string 产生同名..

论坛徽章:
0
24 [报告]
发表于 2013-03-09 18:13 |显示全部楼层
回复 38# yestreenstars


    嗯, 其实你不用考虑第三层 dict, 它只是一种可能, 多数第三层还是 <array></array>

论坛徽章:
0
25 [报告]
发表于 2013-03-09 18:38 |显示全部楼层
回复 40# yestreenstars


    嗯, 我在试试...

论坛徽章:
0
26 [报告]
发表于 2013-03-09 18:49 |显示全部楼层
本帖最后由 letunix 于 2013-03-09 18:51 编辑

回复 40# yestreenstars


文件不变..
string 的字段为 <string>SettingsNetworkController</string>
两种我都试过了, 原文件发给你, 你看看..

Settings.zip (12.56 KB, 下载次数: 13)

论坛徽章:
0
27 [报告]
发表于 2013-03-09 19:06 |显示全部楼层
回复 43# yestreenstars


里面东西太杂, 我就精简了一下发上来, 真不好意思, 浪费你这么多时间.
在一个 dict 里面, 字段基本不会重复的..

论坛徽章:
0
28 [报告]
发表于 2013-03-09 19:23 |显示全部楼层
回复 45# yestreenstars


    能加我个 Q 么?821922257

论坛徽章:
0
29 [报告]
发表于 2013-03-09 19:27 |显示全部楼层
本帖最后由 letunix 于 2013-03-09 19:28 编辑

回复 45# yestreenstars


我直接输出成新文件, 它删除了这一段(是用软件对比两个文件的不同处显示出的结果), 相当于用上面一个 Dict 来足下一个 Dict?:
                        <key>cell</key>
                        <string>PSLinkListCell</string>
                        <key>detail</key>
                        <string>SettingsNetworkController</string>
                        <key>get</key>
                        <string>getCellularDataForSpecifier:</string>
                        <key>iconCache</key>
                        <string>Data</string>
                        <key>id</key>
                        <string>MOBILE_DATA_SETTINGS_ID</string>
                        <key>label</key>
                        <string>MOBILE_DATA_SETTINGS</string>
                        <key>requiredCapabilities</key>
                        <array>
                                <string>ipad</string>
                                <string>cellular-data</string>
                        </array>
                </dict>
                <dict>

可能是软件的问题, 呵呵...我调试多个文件试试...

论坛徽章:
0
30 [报告]
发表于 2013-03-09 19:39 |显示全部楼层
本帖最后由 letunix 于 2013-03-09 19:39 编辑

回复 48# yestreenstars


不能直接输出到原文件?我刚刚是在末尾加了一个 >newfile.plist输出.

    可以加一下我的 Q 么?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP