Não tenho certeza do que você está tentando fazer aqui, mas você pode grep
"todas as sequências que começam com $
e terminam com um caractere não alfanumérico" com isso:
grep -oP '\$.+?\W'
Em resposta ao seu comentário, que tal algo como isto:
for f in 'find . -name "*.php"'; do \
echo "----- $f -----";
for s in $(grep -iE "mysql_connect|mysql_select_db|new PDO" $f |
grep -oP '\$\w+?\W' | sed 's/.$//' | sort | uniq); do \
grep -m 1 $s $f;
done;
done
Este scriptlet irá encontrar todos os arquivos .php, grep cada um deles para as variáveis que você está interessado e então imprimir a primeira instância de cada variável no arquivo em que foi encontrado. Por exemplo, eu criei 2 arquivos .php, aa.php
e bb.php
, seus conteúdos são:
$ cat aa.php
$servername='localhost';
$database_username='someName';
$database_password='p@ssw0rd';
$database_name='someDatabase';
mysql_connect($servername, $database_username, $database_password);
mysql_select_db($database_name);
$ cat bb.php
$servername='localhost2';
$database_username='some2Name';
$database_password='p@ssw0rd2';
$database_name='someDatabase2';
$pdo = new PDO("mysql: host={$servername}; dbname={$$database_name}", $database_username, $database_password);
A saída do script acima é:
----- ./bb.php -----
$database_name='someDatabase2';
$database_password='p@ssw0rd2';
$database_username='some2Name';
$pdo = new PDO("mysql: host={$servername}; dbname={$$database_name}", $database_username, $database_password);
$servername='localhost2';
----- ./aa.php -----
$database_name='someDatabase';
$database_password='p@ssw0rd';
$database_username='someName';
$servername='localhost';