我用下面的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