这是我在这里的第一篇文章,这是个好地方,对我有很大帮助!
所以我正在使用 pcregrep,我想用我的模式捕获文件。我正在为正则表达式使用变量,例如:
test="<\?php\n.*. = Array\(('.'=>'.', ){20,}.*\);\nfunction .*\(.*, .*\).*for\(.i=0; .i .*\nreturn base64_decode(.*);}\n.* ('.*'.\n){10,}.*"
然后搜索文件:
find . -type f -name "*.php1" -print0 | xargs -0 pcregrep --colour=auto -M "$test"
您可以在此处找到要匹配的 test.sh(我正在使用的 bash 文件)和 *.php1 文件:http: //sendrev.com/stackoverflow/
当我运行 sh test.sh 它总是找到行(我看到它是彩色的,因为我正在使用--colour=auto
):
'yzr3YEca5VacRthC6tGoXNkS2n8S2n8S2n8S2n8S2n8S4wUSFBc9FhGcqtcP6JTk4J0kj5TOMZ0yYmL'.
(或其他,但不显示文件结尾)
我无法匹配更多的行,我不明白为什么。我想将最后一行与以下内容匹配:
"eval\(.*(.*, .*\)\);\?>$"
或者
"\)\);\?>"
但我不能去那条线。如果我将 "));\?>" 添加到 "test" 变量的末尾,则找不到任何内容,因为它无法转到最后一行。
!!!重要的是,如果行'.*'.
数远少于一切都可以。看起来有一些我无法理解的限制。
如果你有 CentOS 或其他 linux 发行版,你可以测试它。
你能帮我从我这边搜索错误吗?谢谢。