Пример вывода файла из grep
file1:my $dbh = DBI->connect("dbi:mysql:$database_name", $DB_USER, $DB_PASSWD)
file2:($dbc,$rc) = mysql_connect($mysql_host,$mysql_user,$mysql_password);
Шаблон awk должен получать значения имя базы данных, DB_USER и DB_PASSWD из строки 1 и mysql_host, mysql_user и mysql_password из строки 2, т.е. all variables inside the function.
Затем он должен искать объявление этой переменной в файле до: (точка с запятой)
пример: имя базы данных в file1 может быть
$ databasename = "dbweb";
пример: mysql_user в файле2 может быть
$ mysql_user = "корень";
Результат: он должен отображать объявления переменных всех 6 переменных вместе с именами файлов.
file2:$mysql_host = "db1";
file2:$mysql_user = "root";
file1:$DB_USER = 'user';
Это не awk
, но этот сценарий Perl читается из stdin
должен это сделать (или хотя бы дать несколько подсказок):
while(<>) { # read stdin
chomp;
if (/^([^:]+):(.*)$/) { # match filename
my $file = $1;
my $tail = $2;
while ($tail =~ /\$([A-Za-z0-9_]+)/g) { # match each $variable in the line
my $varname = $1;
open (FILE, $file);
while (<FILE>) {
chomp;
if (/\$$varname\s*=\s*(.*)/ ) { # match the current variable
print "$file: \$$varname = $1\n";
}
}
close (FILE);
}
}
}