여러 줄의 텍스트를 재귀적으로 검색하고 바꾸는 방법(삭제)

여러 줄의 텍스트를 재귀적으로 검색하고 바꾸는 방법(삭제)

디렉토리를 재귀적으로 탐색하여 모든 파일에서 특정 콘텐츠를 검색하고 싶습니다. 이 콘텐츠가 발견되면 교체해야 합니다. 한 줄로 다음과 같이 할 수 있습니다.

find . -type f -exec sed -i -e 's@code2replace@@g' {} \;

작동할 때도 있고 작동하지 않을 때도 있습니다(하드 드라이브 공간 부족...). 이제 여러 교체 작업을 수행할 수 있는 작업이 필요합니다. 원본 파일을 덮어써야 하며 여러 줄 모드가 상당히 길어질 수 있습니다. 그래서 외부 파일에 저장하는 것이 더 쉬울 거라고 생각했습니다.

바꿔야 할 코드는 다음과 같습니다.

#c3284d#
echo(gzinflate(base64_decode("sylOLsos....")));
#/c3284d#

또한 어떤 캐릭터를 탈출해야 합니까?

답변1

Sed는 여러 줄 지원을 포함하여 단순한 검색 및 바꾸기 이상의 작업을 수행할 수 있습니다.

다음은 누군가가 어떻게 했는지에 대한 블로그 게시물입니다(그는 sedml"sed multiline"에 대한 스크립트를 작성했습니다:http://austinmatzko.com/2008/04/26/sed-multi-line-search-and-replace/

기본 아이디어는 전체 파일을 sed의 "보존 버퍼"에 복사하고 정규식을 실행한 다음 변경된 파일을 작성하는 것입니다. 그러나 파일이 큰 경우 전체 파일을 메모리에 한 번에 로드하므로 이 접근 방식은 상당히 느릴 수 있습니다.

관련 정보