【问题标题】:RegEx - find and replace stringRegEx - 查找和替换字符串
【发布时间】:2014-02-26 23:03:04
【问题描述】:

我正在尝试搜索我的服务器并在任何文件中找到以下内容。

我的正则表达式 grep -H -r '/\<\?php\spreg_replace\(\"\/\.\*\/e\"\,\.*?\)\;\?\>/gi' /var/www/html/optinsmart/

我正在寻找这个&lt;?php preg_replace("/.*/e"anything in here);?&gt;,我想用任何东西替换它,或者干脆删除它。

它没有在命令行返回任何匹配项

但是当我执行grep '&lt;?php preg_replace("/.*/e"' /var/www/optinsmart/ 时,它会返回所有这些

我的正则表达式有问题吗?

编辑

我想找到&lt;?php preg_replace("/.*/e"???);?&gt; 在哪里???可以是任何东西。

【问题讨论】:

  • 我在找这个。请具体说明您想要实现的目标,而不是仅仅参考您的正则表达式。

标签: regex command-line


【解决方案1】:

您可以使用grep -F(没有正则表达式的固定字符串):

grep -FHr '<?php preg_replace("/.*/e"' *

要删除这些行,请使用以下 sed:

sed -i.bak '/<?php preg_replace("\/.*\/e"/d' *

【讨论】:

  • 但我需要获取整个 PHP 代码。 &lt;?php preg_replace("/.*/e"???);?&gt; 和 ???可以是任何东西.. gh32947gh9h 0r 一个单词或数字或破折号...
  • 但即使是那一行也是以相同的文本'&lt;?php preg_replace("/.*/e"' 开头的,所以应该不是很好吧?
  • 所以 with 只会走到行尾?
  • 我的服务器被黑了,代码 sn-p 被添加到我所有 index.php 文件的底部。所以我想搜索它并将其从所有文件中删除。你会为此建议什么吗?
  • 我最终使用了find ./ -name "index.php" | xargs sed -i '/&lt;?php preg_replace("\/.*\/e"/d'。感谢您的帮助并为我指明正确的方向