[英]Linux sed command replace string not working
我的wordpress網站已被eval(gzinflate(base64_decode(' hack。
我想ssh進入服務器,並發現用我的php文件替換所有這些行。
我嘗試了以下命令:
find . -name "*.php" -print | xargs sed -i 'MY STRING HERE'
我認為這不起作用,因為該字符串中包含/ 字符 ,我認為需要對其進行轉義。
有人可以讓我知道如何轉義這些字符嗎?
提前致謝。
我還沒有嘗試過,所以請先備份您的文件! 如某些評論中所述,這不是最好的主意,嘗試其他方法可能更好。 不管怎樣
find . -name "*.php" -type f -exec sed -i '/eval(gzinflate(base64_decode(/d' {} \;
如果您有可用的perl:
perl -p -i'.bck' -e 's/oldstring/newstring/g' `find ./ -name *.php`
=>所有修改過的文件都會有一個備份(后綴“ .bck”)
Bash提供了不同的分隔符,例如@%| ; :/在sed替代命令中 。
因此,當替換涉及提到的一個定界符時,可以在sed命令中使用任何其他定界符,從而無需轉義所涉及的定界符。
例:
當替換/替換包含“ /”時,可以使用以下內容:
sed 's@/will/this/work@/this/is/working@g' file.txt
談到您的問題,您的替換/替換包含“ /”,因此您可以使用任何其他定界符。
find . -name "*.php" -print | xargs sed -i 's@/STRING/TO/BE/REPLACED@/REPLACEMENT/STRING@g'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.