Chinaunix

标题: 同一个IP替换成不同的IP [打印本页]

作者: lijixing    时间: 2019-07-04 12:47
标题: 同一个IP替换成不同的IP
各位大神,我有很多文本要处理,但是核心是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}



作者: wh7211    时间: 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
复制代码

作者: lijixing    时间: 2019-07-04 17:24
回复 3# wh7211

hi,我这里的var1 ,var2,var3 只是举例,实际场景中都是未知的变量名。有非常多。
作者: cfwyy    时间: 2019-07-05 07:56
同一个IP换成不同的,其它还有什么规则?不然怎么知道同一个IP要换成哪个IP ?
作者: wh7211    时间: 2019-07-06 12:56
回复 4# lijixing


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

替换规则是什么
作者: csccyab    时间: 2019-07-06 15:12
一开始也觉得問題沒有規則,所以回答的兴趣也沒有





欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2