다음이 포함된 파일이 있습니다.
...
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
모드로 전환하여 전체 파일을 읽습니다. 그런 다음 명령을 대체하여 원하는 대로 변경합니다.