免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3996 | 回复: 13
打印 上一主题 下一主题

[文本处理] 脚本处理文件,有些复杂,高手进 [复制链接]

论坛徽章:
1
程序设计版块每日发帖之星
日期:2016-07-11 06:20:00
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2016-07-08 09:56 |只看该作者 |倒序浏览
本帖最后由 308123027 于 2016-07-08 09:59 编辑

有两个Kconfig文件,A和B,现在要将B的内容同步到A,由于B不是从A直接修改过来(因此不能用diff + patch动作来操作),需要将B的内容找出来对应修改A的内容,

比如:A中config MTK_NET下default n,B中为default y

其中if MTK_NET ... endif中有config NET_AAAAA_GF_TEE,现在要将起替换为B中内容

所有这些必须在menu ... endmenu,  if MTK_NET ... endif这样的对应范围内修改

最后将修改后内容写回A

KconfigA内容如下:
#
#NET
#
menu "NET support"
        depends on !UML

config MTK_NET
        tristate "Mediatek NET"
        default n
        ---help---
        NET mtk driver enable/disable in the kernel.
        Say Y here if you want to use mediatek NET driver,
        NET driver will support NET function in REE,
        it supports BBBBB's N/K device.

if MTK_NET

config BBBBB_NET
        tristate "BBBBB NET"
        default n
        ---help---
        BBBBB NET BBBBB's N/K device.

config NET_AAAAA_GF_TEE
        tristate "AAAAA NET"
        default n
        ---help---
        AAAAA NET chip M TEE driver

endif
endmenu


KconfigB,内容如下:

menu "NET support"
        depends on !UML

config MTK_NET
        tristate "Mediatek NET"
        default y
        ---help---
        NET mtk driver enable/disable in the kernel.
        Say Y here if you want to use mediatek NET driver,
        NET driver will support NET function in REE,
        it supports AAAAA's M... device.

if MTK_NET

config AAAAA_NET
        tristate "AAAAA NET"
        default y
        ---help---
        AAAAA NET chip M TEE driver

config AAAAA_SENSOR_TYPE
        string "SENSOR_TYPE"
        default "M"
        ---help---
        Must input sensor type, or default is M

endif
endmenu



论坛徽章:
307
程序设计版块每周发帖之星
日期:2016-04-08 00:41:33操作系统版块每日发帖之星
日期:2015-09-02 06:20:00每日论坛发贴之星
日期:2015-09-02 06:20:00程序设计版块每日发帖之星
日期:2015-09-04 06:20:00每日论坛发贴之星
日期:2015-09-04 06:20:00每周论坛发贴之星
日期:2015-09-06 22:22:00程序设计版块每日发帖之星
日期:2015-09-09 06:20:00程序设计版块每日发帖之星
日期:2015-09-19 06:20:00程序设计版块每日发帖之星
日期:2015-09-20 06:20:00每日论坛发贴之星
日期:2015-09-20 06:20:00程序设计版块每日发帖之星
日期:2015-09-22 06:20:00程序设计版块每日发帖之星
日期:2015-09-24 06:20:00
2 [报告]
发表于 2016-07-08 10:16 |只看该作者
本帖最后由 sunzhiguolu 于 2016-07-08 10:19 编辑

回复 1# 308123027
以 KconfigA, KconfigB 为例, 将你希望得到的结果 贴出来, 看的更加直观些. (有特殊要求的地方请注明, 谢谢!)

另外,
比如:A中config MTK_NET下default n,B中为default y

这里单独拿出来说一下, 有什么特殊的含义吗?

   

论坛徽章:
1
程序设计版块每日发帖之星
日期:2016-07-11 06:20:00
3 [报告]
发表于 2016-07-08 10:45 |只看该作者
回复 2# sunzhiguolu
也就是说要找到对应的block,并将其值同步过去。请问在A中找

config MTK_NET
        tristate "Mediatek NET"
        default n
        ---help---
        NET mtk driver enable/disable in the kernel.
        Say Y here if you want to use mediatek NET driver,
        NET driver will support NET function in REE,
        it supports BBBBB's N/K device.
这样的一大段,如何处理??

比如我要从A中删除

config NET_AAAAA_GF_TEE
        tristate "AAAAA NET"
        default n
        ---help---
        AAAAA NET chip M TEE driver


这样一大段,如何处理??

   

论坛徽章:
1
程序设计版块每日发帖之星
日期:2016-07-11 06:20:00
4 [报告]
发表于 2016-07-08 10:55 |只看该作者
回复 2# sunzhiguolu

我打算这么处理:
1)先从A中清除与B修改相关的内容

config MTK_NET
        tristate "Mediatek NET"
        default n
        ---help---
        NET mtk driver enable/disable in the kernel.
        Say Y here if you want to use mediatek NET driver,
        NET driver will support NET function in REE,
        it supports BBBBB's N/K device.



2)再从B中读取对应的block 插入A中

    config MTK_NET
        tristate "Mediatek NET"
        default y
        ---help---
        NET mtk driver enable/disable in the kernel.
        Say Y here if you want to use mediatek NET driver,
        NET driver will support NET function in REE,
        it supports AAAAA's M... device.

下面的也类似,这样是否可行?

论坛徽章:
307
程序设计版块每周发帖之星
日期:2016-04-08 00:41:33操作系统版块每日发帖之星
日期:2015-09-02 06:20:00每日论坛发贴之星
日期:2015-09-02 06:20:00程序设计版块每日发帖之星
日期:2015-09-04 06:20:00每日论坛发贴之星
日期:2015-09-04 06:20:00每周论坛发贴之星
日期:2015-09-06 22:22:00程序设计版块每日发帖之星
日期:2015-09-09 06:20:00程序设计版块每日发帖之星
日期:2015-09-19 06:20:00程序设计版块每日发帖之星
日期:2015-09-20 06:20:00每日论坛发贴之星
日期:2015-09-20 06:20:00程序设计版块每日发帖之星
日期:2015-09-22 06:20:00程序设计版块每日发帖之星
日期:2015-09-24 06:20:00
5 [报告]
发表于 2016-07-08 11:00 |只看该作者
回复 3# 308123027
请问在A中找

config MTK_NET
        tristate "Mediatek NET"
        default n
        ---help---
        NET mtk driver enable/disable in the kernel.
        Say Y here if you want to use mediatek NET driver,
        NET driver will support NET function in REE,
        it supports BBBBB's N/K device.
这样的一大段,如何处理??


比如我要从A中删除

config NET_AAAAA_GF_TEE
        tristate "AAAAA NET"
        default n
        ---help---
        AAAAA NET chip M TEE driver


这样一大段,如何处理??


第一个问题你明白了, 第二个相信你应该不在话下.
  1. perl -00 -nle 'print if(/\Aconfig MTK_NET/)' a
复制代码
config MTK_NET
        tristate "Mediatek NET"
        default n
        ---help---
        NET mtk driver enable/disable in the kernel.
        Say Y here if you want to use mediatek NET driver,
        NET driver will support NET function in REE,
        it supports BBBBB's N/K device.

   

论坛徽章:
1
程序设计版块每日发帖之星
日期:2016-07-11 06:20:00
6 [报告]
发表于 2016-07-08 11:02 |只看该作者
回复 5# sunzhiguolu


    可以不用perl吗,我不会那个,用sed, awk之类的

论坛徽章:
10
天蝎座
日期:2013-09-22 22:32:23程序设计版块每日发帖之星
日期:2016-08-07 06:20:00lufei
日期:2016-06-17 17:38:40程序设计版块每日发帖之星
日期:2016-06-12 06:20:002016科比退役纪念章
日期:2016-05-31 15:47:20CU十四周年纪念徽章
日期:2016-05-27 12:24:562015年亚洲杯之阿曼
日期:2015-05-03 21:01:352015年辞旧岁徽章
日期:2015-03-03 16:54:15天蝎座
日期:2013-10-20 21:05:24程序设计版块每日发帖之星
日期:2016-08-11 06:20:00
7 [报告]
发表于 2016-07-08 11:04 |只看该作者
回复 4# 308123027

1. 读取A文件的内容,写入临时文件,如果遇到要替换的内容,读取B中目标内容写入临时文件
2. 重复步骤1,直到A读取完成
3. 删除或者重命名A
4. 把临时文件改成A

   

论坛徽章:
10
天蝎座
日期:2013-09-22 22:32:23程序设计版块每日发帖之星
日期:2016-08-07 06:20:00lufei
日期:2016-06-17 17:38:40程序设计版块每日发帖之星
日期:2016-06-12 06:20:002016科比退役纪念章
日期:2016-05-31 15:47:20CU十四周年纪念徽章
日期:2016-05-27 12:24:562015年亚洲杯之阿曼
日期:2015-05-03 21:01:352015年辞旧岁徽章
日期:2015-03-03 16:54:15天蝎座
日期:2013-10-20 21:05:24程序设计版块每日发帖之星
日期:2016-08-11 06:20:00
8 [报告]
发表于 2016-07-08 11:06 |只看该作者
回复 6# 308123027
  1. sed '/config NET_AAAAA_GF_TEE/,/^$/d' A
复制代码

论坛徽章:
307
程序设计版块每周发帖之星
日期:2016-04-08 00:41:33操作系统版块每日发帖之星
日期:2015-09-02 06:20:00每日论坛发贴之星
日期:2015-09-02 06:20:00程序设计版块每日发帖之星
日期:2015-09-04 06:20:00每日论坛发贴之星
日期:2015-09-04 06:20:00每周论坛发贴之星
日期:2015-09-06 22:22:00程序设计版块每日发帖之星
日期:2015-09-09 06:20:00程序设计版块每日发帖之星
日期:2015-09-19 06:20:00程序设计版块每日发帖之星
日期:2015-09-20 06:20:00每日论坛发贴之星
日期:2015-09-20 06:20:00程序设计版块每日发帖之星
日期:2015-09-22 06:20:00程序设计版块每日发帖之星
日期:2015-09-24 06:20:00
9 [报告]
发表于 2016-07-08 11:12 |只看该作者
当我看完您的帖子时, 有不明白的地方才会想您发问.
毕竟你对待处理的文件非常了解, 其他人只能从你的简短的问题描述中理解你的需求 ...

论坛徽章:
1
程序设计版块每日发帖之星
日期:2016-07-11 06:20:00
10 [报告]
发表于 2016-07-08 11:17 |只看该作者
回复 7# liion631818


    不能一条一条的找,主要是一大块一大块处理
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP