我用下面的Perl语法,以替换字符串或IP地址的文件:问题如何用Perl替换文件中的完整IP地址?
OLD=aaa.bbb.ccc.ddd (old IP address)
NEW=yyy.zzz.www.qqq (new IP address)
export OLD
export NEW
perl -pe 'next if /^ *#/; s/\Q$ENV{OLD }\E/$1$ENV{NEW }$2/' file
例如:
我想从1.1.1.1到5.5更改文件中的IP地址.5.5
,但我得到以下几点:
more file (before change)
11.1.1.10 machine_moon1
more file (after change)
15.5.5.50 machine_moon1
据“改变例子之后)的IP‘11.1.1.10’必须留下来,因为它是的,因为我想只改变1.1.1.1,而不是11.1.1.10
我需要帮助我的perl的一个行语法:
如何只根据以下规则改变我的perl语法:
RULE: Not change the IP address if:left IP side or right IP side have number/s
例
IP=1.1.1.1
IP=10.10.1.11
IP=yyy.yyy.yyy.yyy
[number]1.1.1.1[number] - then not replace
[number]10.10.1.11[number] - then not replace
[number]yyy.yyy.yyy.yyy[number] - then not replace
Other cases:
[any character beside number ]yyy.yyy.yyy.yyy[[any character beside number ]] - then replace
如果右侧或左侧没有数字,则不起作用:echo A1.1.1.1 | perl -pe'next if/^ *#/; s/\ b $ ENV {OLD} \ b/$ ENV {NEW} /' – jon 2010-10-13 19:52:06
那么,OP没有说明,但是这个版本是关于你在找什么的?注意我只是将\ D(非数字)更改为\ b | \ D(字边界或非数字),并用parens进行捕获。 – 2010-10-13 19:57:49
是的,现在它的确定,“\ D”使它能够取代它,如果它的特点 – jon 2010-10-13 20:02:22