2010-12-07 5 views
1

에 일치하는 두 단어 I이 파일에 다음 줄펄은 + 한 줄 변경 문자열 경우에만 라인

내가 예 3.4.5.6 만에 대한 다른 IP로 IP 12.34.3.9을 변경해야
<getTheIP ConnectType='INFO' Host='machine_num_1' VirtualIp='12.34.3.9'/> 

내가 라인에있는 경우 첫 번째 단어 일치 CONNECTTYPE 두 번째 단어 일치 machine_num_1

내가 펄 하나의 라인 커멘드로 (내가 bash는 스크립트에서이 펄 줄 명령을 실행해야합니다) 그렇게 할 수있는 방법을 조언을 바랍니다

답변

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

+0

당신은 perl [...]> myfile을 사용하여 출력 파일을 파이프 할 수 있습니다. –

+0

파일에 쓸 수없는 이유는 무엇입니까? – jon

관련 문제