Perl을 사용하여 여러 줄 표현식 변경

Perl을 사용하여 여러 줄 표현식 변경

다음이 포함된 파일이 있습니다.

...

CNN
111
XXX

ABC
111
XXX

ABC
111
BBC

...

111을 999로 변경해야 하지만 ABC\n111\nXXX의 일부로만 변경해야 합니다.

...

CNN
111
XXX

ABC
999
XXX

ABC
111
BBC

...

나는 이것을 시도했지만 모든 곳에서 "111"로 변경됩니다.

perl -i -pe '/ABC\n111\nXXX/ if s/111/999/g' FILE

참고: "111"은 다른 여러 위치에 나타날 수 있으므로 여러 줄을 비교해야 합니다. 파일 크기는 227kb입니다.

답변1

perl -0777 -i -p -e 's/ABC\n111\nXXX/ABC\n999\nXXX/g;' file

-0777 Perl을 slurp모드로 전환하여 전체 파일을 읽습니다. 그런 다음 명령을 대체하여 원하는 대로 변경합니다.

관련 정보