免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1055 | 回复: 5

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

论坛徽章:
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}


论坛徽章:
21
程序设计版块每日发帖之星
日期:2016-05-03 06:20:0015-16赛季CBA联赛之深圳
日期:2018-06-15 14:59:3715-16赛季CBA联赛之八一
日期:2018-07-03 16:56:4615-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-06-08 13:45:2815-16赛季CBA联赛之同曦
日期:2018-06-04 19:42:2015-16赛季CBA联赛之山东
日期:2018-05-30 12:44:59
发表于 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
发表于 2019-07-04 17:24 |显示全部楼层
回复 3# wh7211

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

论坛徽章:
5
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:40
发表于 2019-07-05 07:56 |显示全部楼层
同一个IP换成不同的,其它还有什么规则?不然怎么知道同一个IP要换成哪个IP ?

论坛徽章:
21
程序设计版块每日发帖之星
日期:2016-05-03 06:20:0015-16赛季CBA联赛之深圳
日期:2018-06-15 14:59:3715-16赛季CBA联赛之八一
日期:2018-07-03 16:56:4615-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-06-08 13:45:2815-16赛季CBA联赛之同曦
日期:2018-06-04 19:42:2015-16赛季CBA联赛之山东
日期:2018-05-30 12:44:59
发表于 2019-07-06 12:56 |显示全部楼层
回复 4# lijixing


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

替换规则是什么

论坛徽章:
0
发表于 2019-07-06 15:12 |显示全部楼层
一开始也觉得問題沒有規則,所以回答的兴趣也沒有
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

SACC2019中国系统架构师大会

【数字转型 架构演进】SACC2019中国系统架构师大会,7折限时优惠重磅来袭!
2019年10月31日~11月2日第11届中国系统架构师大会(SACC2019)将在北京隆重召开。四大主线并行的演讲模式,1个主会场、20个技术专场、超千人参与的会议规模,100+来自互联网、金融、制造业、电商等领域的嘉宾阵容,将为广大参会者提供一场最具价值的技术交流盛会。

限时七折期:2019年8月31日前


----------------------------------------

大会官网>>
  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP