免费注册 查看新帖 |

Chinaunix

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

[文本处理] 同一个IP替换成不同的IP [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2019-07-04 12:47 |只看该作者 |倒序浏览
各位大神,我有很多文本要处理,但是核心是IP或域名的替换,我整理了一下格式大概如下 。搞了好久没搞定。哪位大神给下思路。

原文本:

VAR1_SERVER = [{'addr': ('172.100.101.249', 9300), 'timeout': 2000}, {'addr': ('172.100.101.249', 9300), 'timeout': 2000},]

VAR2_SERVER = [
    {'addr': ('172.100.101.249', 4530), 'timeout': 10000, 'rule':[('txamt','<',200)]},
    {'addr': ('172.100.101.249', 4531), 'timeout': 10000, 'rule':[('txamt','<',200)]},
    {'addr': ('172.100.101.249', 4530), 'timeout': 10000, 'rule':[('txamt','<',200)]},
    {'addr': ('172.100.101.249', 4531), 'timeout': 10000, 'rule':[('txamt','<',200)]},
]

VAR3 = [
    {'addr': ('172.100.101.249', 4330), 'timeout': 15000},
    {'addr': ('172.100.101.249', 4330), 'timeout': 15000},
    {'addr': ('172.100.101.249', 4331), 'timeout': 15000},
    {'addr': ('172.100.101.249', 4331), 'timeout': 15000},
]


VAR4 = {'addr': ('172.100.101.249', 5330), 'timeout': 15000}

想要的结果:
VAR1_SERVER = [{'addr': ('10.1.1.1', 9300), 'timeout': 2000}, {'addr': ('10.1.1.2', 9300), 'timeout': 2000},]

VAR2_SERVER = [
    {'addr': ('10.1.1.1', 4530), 'timeout': 10000, 'rule':[('txamt','<',200)]},
    {'addr': ('10.1.1.1', 4531), 'timeout': 10000, 'rule':[('txamt','<',200)]},
    {'addr': ('10.1.1.2', 4530), 'timeout': 10000, 'rule':[('txamt','<',200)]},
    {'addr': ('10.1.1.2', 4531), 'timeout': 10000, 'rule':[('txamt','<',200)]},
]

VAR3 = [
    {'addr': ('10.1.1.1', 4330), 'timeout': 15000},
    {'addr': ('10.1.1.2', 4330), 'timeout': 15000},
    {'addr': ('10.1.1.1', 4331), 'timeout': 15000},
    {'addr': ('10.1.1.2', 4331), 'timeout': 15000},
]

VAR4 = {'addr': ('10.1.1.1', 5330), 'timeout': 15000}


论坛徽章:
25
程序设计版块每日发帖之星
日期:2016-05-03 06:20:0015-16赛季CBA联赛之八一
日期:2018-07-05 10:34:09黑曼巴
日期:2018-07-06 15:19:5015-16赛季CBA联赛之佛山
日期:2018-08-03 13:19:3315-16赛季CBA联赛之山西
日期:2018-08-07 19:46:2315-16赛季CBA联赛之广夏
日期:2018-08-08 19:31:5015-16赛季CBA联赛之青岛
日期:2018-11-26 15:21:5015-16赛季CBA联赛之上海
日期:2018-12-11 09:45:3219周年集字徽章-年
日期:2020-04-18 23:54:5215-16赛季CBA联赛之深圳
日期:2020-04-19 21:40:19黑曼巴
日期:2022-04-03 17:55:1315-16赛季CBA联赛之八一
日期:2018-07-03 16:56:46
2 [报告]
发表于 2019-07-04 15:27 |只看该作者
回复 1# lijixing


  1. awk '/^VAR1/||/^VAR3/{a=1}/^VAR2/{b=1}{d=split($0,c,"},");d=d>2?d-1:1;for(i=1;i<=d;i++){if(a){f=e%2==0?10.1.1.1:10.1.1.2}else if(b){f=e<2?10.1.1.1:10.1.1.2}else{f=10.1.1.1};if(sub(/172.100.101.249/,f)){e++}}}/[]}]$/{a=b=e=0;f=""}1' file
复制代码

论坛徽章:
0
3 [报告]
发表于 2019-07-04 17:24 |只看该作者
回复 3# wh7211

hi,我这里的var1 ,var2,var3 只是举例,实际场景中都是未知的变量名。有非常多。

论坛徽章:
8
2016科比退役纪念章
日期:2018-10-24 08:24:0115-16赛季CBA联赛之北控
日期:2019-03-12 14:34:562016科比退役纪念章
日期:2019-04-01 10:33:0915-16赛季CBA联赛之山东
日期:2019-04-17 12:46:3215-16赛季CBA联赛之广夏
日期:2019-05-09 16:40:4015-16赛季CBA联赛之广夏
日期:2019-10-10 15:33:4015-16赛季CBA联赛之辽宁
日期:2019-10-15 08:37:0615-16赛季CBA联赛之北控
日期:2021-03-30 15:53:34
4 [报告]
发表于 2019-07-05 07:56 |只看该作者
同一个IP换成不同的,其它还有什么规则?不然怎么知道同一个IP要换成哪个IP ?

论坛徽章:
25
程序设计版块每日发帖之星
日期:2016-05-03 06:20:0015-16赛季CBA联赛之八一
日期:2018-07-05 10:34:09黑曼巴
日期:2018-07-06 15:19:5015-16赛季CBA联赛之佛山
日期:2018-08-03 13:19:3315-16赛季CBA联赛之山西
日期:2018-08-07 19:46:2315-16赛季CBA联赛之广夏
日期:2018-08-08 19:31:5015-16赛季CBA联赛之青岛
日期:2018-11-26 15:21:5015-16赛季CBA联赛之上海
日期:2018-12-11 09:45:3219周年集字徽章-年
日期:2020-04-18 23:54:5215-16赛季CBA联赛之深圳
日期:2020-04-19 21:40:19黑曼巴
日期:2022-04-03 17:55:1315-16赛季CBA联赛之八一
日期:2018-07-03 16:56:46
5 [报告]
发表于 2019-07-06 12:56 |只看该作者
回复 4# lijixing


搞了好久没搞定。哪位大神给下思路。

替换规则是什么

论坛徽章:
0
6 [报告]
发表于 2019-07-06 15:12 |只看该作者
一开始也觉得問題沒有規則,所以回答的兴趣也沒有
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP