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

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

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

나는 grep | sed 및 grep | tr을 사용하여 끝없이 시도했지만 간단한 텍스트 문자열도 제거할 수 없어 다른 오류가 발생했습니다.

시도할 때:

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

오류 메시지가 나타납니다.

읽을 수 없음파일 이름.php

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

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

답변1

백업 또는 소스 제어에서 복원해야 합니다.@인주그렇지 않으면 모든 것을 청소했다고 100% 확신할 수 없기 때문에 이 방법을 사용하는 것이 좋습니다.

명령의 문제점은 -0xargs접근 방식에 xargsnull 종료 매개변수가 필요하므로 이것이 출력에 적용되지 않는다는 것입니다 grep -l. -0파일 이름에 공백이 없으면 제거 하기만 하면 작동합니다.

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

답변2

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

작동합니다.

관련 정보