PHP 파일에서 긴 문자열 제거 - grep 및 sed를 사용하시겠습니까?

PHP 파일에서 긴 문자열 제거 - grep 및 sed를 사용하시겠습니까?

내 Linux 서버에서 일부 악성 코드를 발견하여 많은 PHP 파일에서 이를 제거하려고 합니다.

나는 grep으로 끝없이 노력했습니다 | sed 및 grep | tr이며 간단한 텍스트 문자열도 지울 수 없어 다른 오류가 발생했습니다.

시도할 때:

grep -l '@error' * | xargs -0 sed -i 's/error/nothing/g'   

다음과 같은 오류 메시지가 나타납니다.

읽을 수 없다파일 이름.php

Mac에서 터미널 사용 - 어쩌면 OSX 구문 문제일까요?

마지막 작업은 모든 파일에서 긴 코드 문자열($,!,?,<,>,\," 기호가 포함된 코드)을 삭제하는 것입니다. 해당 코드를 백슬래시해야 합니까?

답변1

다음과 같이 백업 또는 소스 제어에서 복원해야 합니다.@매트그렇지 않으면 모든 것을 정리했다고 100% 확신할 수 없기 때문에 제안되었습니다.

명령의 문제는 -0에 대한 플래그 입니다 xargs. 왜냐하면 이 방식은 xargs의 출력에서 ​​작동하지 않는 null 종료 인수를 예상하기 때문입니다 grep -l. -0파일 이름에 공백이 없는 한 을 삭제하면 작동합니다.

grep -l '@error' * | xargs sed -i 's/error/nothing/g'

답변2

grep -l @error * | xargs sed -i s/error/test/g

작동합니다.

관련 정보