Einen langen String aus PHP-Dateien entfernen – mit grep und sed?

Einen langen String aus PHP-Dateien entfernen – mit grep und sed?

Ich habe auf meinem Linux-Server Schadsoftware gefunden und versuche, sie aus vielen PHP-Dateien zu entfernen.

Ich habe es endlos mit grep | sed und grep | tr versucht und konnte nicht einmal eine einfache Textzeichenfolge löschen, sondern erhielt verschiedene Fehlermeldungen.

Beim Versuch:

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

Ich erhalte eine Fehlermeldung:

kann nicht lesenDateiname.php

Terminal auf dem Mac verwenden – vielleicht ist es ein OSX-Syntaxproblem?

Meine letzte Aufgabe besteht darin, eine lange Codezeichenfolge aus allen Dateien zu löschen. Sie enthält die Symbole $,!,?,<,>,\," – muss ich diese mit einem Backslash versehen?

Antwort1

Sie sollten aus einer Sicherung oder einer Quellcodeverwaltung wiederherstellen,@Matteempfohlen, da Sie sonst nicht 100 % sicher sein können, dass Sie alles bereinigt haben.

Das Problem mit Ihrem Befehl ist das -0Flag für xargs, da dieser Weg xargsnullterminierte Argumente erwartet, was mit der Ausgabe von nicht funktioniert grep -l. Lassen Sie einfach das weg -0und es wird funktionieren, solange die Dateinamen keine Leerzeichen enthalten.

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

Antwort2

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

wird funktionieren.

verwandte Informationen