我需要识别分布在不同目录下许多文件中的 php 源代码中的所有查询。
我想使用 grep 和 MySQL 关键字来识别它们。有两种方法可以区分此源代码中的查询。
- 它们总是用双引号引起来。
- 它们将始终具有 MySQL 关键字,例如
insert
、select
、和。update
delete
alter
但是有一个问题,双引号中的查询可以分布在多行中。例子 :
$newQuery = "Select username
from
usertable"
所以我需要识别"Select username from usertable"
但是 grep 不能在多行上工作。
我试过 :
egrep -e '"(.*?)\+"' test.php | grep "select"
它适用于单行但又错过了多行查询。
所以我尝试了
sed -e '/\"/,/\"/!d' test.php
它返回所有查询,但我这样做了
sed -e '/\"/,/\"/!d' test.php | grep select
它返回,
"select
这不好。我想我需要在 sed 中转义换行符。我如何实现这一目标?bash 的任何其他标准命令也可以,例如 awk。