Я более свеж в написании сценариев Perl, поэтому я задаю этот вопрос в качестве вопроса или поддержки по этому вопросу, ниже приведен код
start pattern1
line1
Matching pattern can be here
line2
Matching Pattern can be here
line3
line4
...
end pattern1
.
start pattern1
line1
line2
start pattern1
start pattern1
line1
Matching pattern can be here
line2
start pattern1
, поэтому из perl мне нужно найти строки между начальным шаблоном1 ... end pattern1, для этого я использую команду awk для grep
$cmd = q(awk '/start pattern1/,end pattern1 /' x.file );
$n1 = system($cmd);
Для этого вывода работает нормально, ниже вывод,
start pattern1
line1
**Matching pattern can be here**
line2
**Matching Pattern can be here**
...
end pattern1
Но в файлах у меня есть 1000 излинии, как это, поэтому мне нужно grep те линии, которые имеют шаблон соответствия.то есть мне нужно grep только те начальные строки шаблона, чтобы конечные строки шаблона имели соответствующий шаблон
Для этого я попытался
$cmd = q(awk '/start pattern1/,end pattern1 /' x.file | grep '$n2\|line4');
$n1 = system($cmd);
Но когда я использую вышеуказанную команду, я не вижу никакого выводаЗдесь $ n2 содержит некоторый шаблон, извлеченный из другого файла.
Если я использую шаблон прямого совпадения вместо $ n2, он работает нормально, почему я не могу использовать здесь $ n2?
Примечание: яЯ использую это в скрипте Perl
Из команды Awk я получаю все строки между начальным pattern1 ... end pattern1, но у меня есть 1000 таких отпечатков, поэтому мне нужно связку строк начального pattern1 дляконечный шаблон 1 из этого, который сопоставляется с соответствующим шаблоном
Ожидаемый результат, когда я это сделаю,
start pattern1
line1
Matching pattern can be here
line2
Matching Pattern can be here
line3
line4
...
end pattern1
start pattern1
line1
Matching pattern can be here
line2
start pattern1