2010-12-07 21 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