Удаление длинной строки из 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ожидает аргументы с нулевым завершением, что не работает с выводом grep -l. Просто удалите , -0и это будет работать, если только в именах файлов нет пробелов.

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

решение2

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

будет работать.

Связанный контент