Grep $ _SESSION ['id']仅在php文件中

时间:2015-08-18 10:30:56

标签: php linux grep pattern-matching

尝试仅在PHP文件中grep $_SESSION['id']

grep -r --include="*.php" "SESSION\['id'\]" /var/www/ > grep.txt

但我在grep.txt中遇到了一些可怕的东西而且不仅仅是匹配。

如何编写正确的语法?

3 个答案:

答案 0 :(得分:2)

希望我能找到那个提供GNU grep选项的人来搜索文件,询问为什么以及谁告诉他这是合理的事情!

无论如何......用于查找文件的UNIX工具名为find

find /var/www -name '*.php' | xargs grep -F "\$_SESSION['id']"

答案 1 :(得分:1)

问题是$_正在双引号内解释:grep "$var"正在寻找$var的内容,而grep '$var'正在寻找文字字符串{{ 1}}。

所以你需要使用单引号来避免这种情况。由于您的模式已经包含单引号,我们必须再次关闭并打开:

$var

所有在一起:

'$_SESSION['"'"'id'"'"']'

丑陋,我知道。

答案 2 :(得分:1)

我使用名为“ack-grep”的命令行工具。默认情况下,它只搜索“源代码”,但您也可以缩小到特定的文件扩展名(例如匹配“.php .phpt .php3 .php4 .php5 .phtml”的--php和#!与'php'在一起)。

您也可以将其设置为默认情况下也忽略特定目录 - 我已将本地配置设置为不进入供应商/目录。

ack --php "\$_SESSION['id']"

$仍然需要引用 - 但这是因为外部双引号。