2010-12-07 95 views
1

我在文件中的以下行perl的+一行变化串仅匹配两个字符合

<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(我需要从运行bash脚本这个perl的行命令)

回答

2
>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'/> 
+0

我可以添加“-i”标志写入文件吗? – jon 2010-12-07 13:25:19

相关问题