2014-07-07 3 views
0

파일을 반복하고 있습니다. 검색해야하는 문자열이 있고 그 문자열에서 다른 문자열로 하위 문자열을 대체해야합니다. 아무도 나를이 문제를 해결하는 데 도움이 될 수 있습니다. 이렇게 해보았습니다.PERL의 행을 다른 행으로 바꾸십시오.

while(<FH>) 
{ 
if($_ =~ /AndroidAPIEventLogging=false/i) 
{ 

if($& =~ s/false/True/) 
{ 
print("Changed successfully\n"); 

} 

} 

} 

이제는 읽기 작업 만 수행 할 수 있다는 것을 보여줍니다. 가능한 모드로 파일을 열어 보았습니다. 그렇게 다시 질문

while (<FH>) { 
    # everything before '\K' is not replaced (positive look behind) 
    if (s/AndroidAPIEventLogging=\Kfalse/True/i) { # $_ =~ 

    print("Changed successfully\n"); 
    } 
} 

답변

2

일치 및 대체는 펄 안티 패턴의 일종입니다 펄 하나를 통해 -i option를 사용하여 - 라이너

perl -i -pe 's/AndroidAPIEventLogging=false/AndroidAPIEventLogging=true/i' file1 file2... 

다른 방법으로는 Tie::File을 살펴보십시오. 신속한 내부 파일 편집을 위해 설계된 것 같습니다.

0

에 당신이 할 수있는, (종종 같은 문자열)을 두 번 일치하고 같은

관련 문제