perl + одна строка меняет строку, только если совпадают два слова в строке - PullRequest
1 голос
/ 07 декабря 2010

У меня есть следующая строка в файле

    <getTheIP ConnectType='INFO' Host='machine_num_1' VirtualIp='12.34.3.9'/>

Мне нужно изменить IP 12.34.3.9 на другой IP, например, 3.4.5.6, но только если в строке есть первое совпадение слов ConnectType и совпадение второго слова machine_num_1

Посоветуйте, пожалуйста, как я могу это сделать с помощью perl в одну строку commnand (мне нужно запустить эту команду perl line из скрипта bash)

1 Ответ

2 голосов
/ 07 декабря 2010
>cat test.txt
 <getTheIP ConnectType='INFO' Host='machine_num_1' VirtualIp='12.34.3.9'/>
 <getTheIP ConnectFour='INFO' Host='machine_num_41' VirtualIp='12.34.3.9'/>
 <getTheIP ConnectThree='INFO' Host='machine_num_31' VirtualIp='12.34.3.9'/>
 <getTheIP ConnectType='INFO' Host='machine_num_21' VirtualIp='12.34.3.9'/>

>perl -lpe "if (/ConnectType/ && /'machine_num_1'/) {s/(\d{1,3}\.){3}\d{1,3}/3.4.5.6/};" test.txt
 <getTheIP ConnectType='INFO' Host='machine_num_1' VirtualIp='3.4.5.6'/>
 <getTheIP ConnectFour='INFO' Host='machine_num_41' VirtualIp='12.34.3.9'/>
 <getTheIP ConnectThree='INFO' Host='machine_num_31' VirtualIp='12.34.3.9'/>
 <getTheIP ConnectType='INFO' Host='machine_num_21' VirtualIp='12.34.3.9'/>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...