免费注册 查看新帖 |

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
41 [报告]
发表于 2013-03-09 18:00 |只看该作者
本帖最后由 yestreenstars 于 2013-03-09 18:08 编辑

有点小问题,修改一下~

论坛徽章:
0
42 [报告]
发表于 2013-03-09 18:13 |只看该作者
回复 38# yestreenstars


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

论坛徽章:
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
43 [报告]
发表于 2013-03-09 18:23 |只看该作者
1.如果你的分隔符是"\t",那就用下面的脚本:
  1. sed -r '/^\t{3}<dict>$/{:1;N;/<dict>$/{:2;N;/<\/dict>/!b2;b1};/\n$/!b1;/<string>xxx<\/string>/d}'
复制代码
2.如果你的分隔符是" ",那就用下面的脚本:
  1. sed -r '/^ {24}<dict>$/{:1;N;/<dict>$/{:2;N;/<\/dict>/!b2;b1};/\n$/!b1;/<string>xxx<\/string>/d}'
复制代码

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


    嗯, 我在试试...

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

回复 40# yestreenstars


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

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

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


    看来你的范例文本真是加盐加醋啊!发范例也要发得跟原文本差不多啊!下面是针对你给的文件,貌似只有一段包含那个关键字?
  1. sed -r '/^\t{2}<dict>$/{:1;N;/<dict>$/{:2;N;/<\/dict>/!b2;b1};/<\/dict>$/!b1;/<string>SettingsNetworkController<\/string>/d}'
复制代码

论坛徽章:
0
47 [报告]
发表于 2013-03-09 19:06 |只看该作者
回复 43# yestreenstars


里面东西太杂, 我就精简了一下发上来, 真不好意思, 浪费你这么多时间.
在一个 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
48 [报告]
发表于 2013-03-09 19:12 |只看该作者
回复 44# letunix


    没事,那后来发的那个脚本解决问题了没?

论坛徽章:
0
49 [报告]
发表于 2013-03-09 19:23 |只看该作者
回复 45# yestreenstars


    能加我个 Q 么?821922257

论坛徽章:
0
50 [报告]
发表于 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>

可能是软件的问题, 呵呵...我调试多个文件试试...
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP