簡體   English   中英

Linux sed命令替換字符串不起作用

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM