Я использовал следующий синтаксис 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
пример проблемы:
Я хочу изменить IP-адрес в файле с 1.1.1.1 на 5.5.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