我是Perl的初学者,并且试图在搜索关键词后在两个关键词之间打印段落。在Perl中的两个关键词之间提取段落
所以这应该寻找ooaijp01.intlb.net-pool
,如果它匹配它应该打印一个关键的词
下面是输入文件之间的段落。你能帮我实现吗? 它应该忽略大小写
和文件名
pool {
name "ooaijp01.intlb.net-pool"
ttl *
preferred ***
alternatkke **
fallback *****
fallback_ipv4 ****
partition "Common"
member *****
member *******
}
pool
pool {
name "ooaijj01.intlb.net-pool"
ttl *
preferred ***
alternatkke **
fallback *****
fallback_ipv4 ****
partition "Common"
member *****
member *******
}
pool
pool {
name "ooaijk01.intlb.net-pool"
ttl *
preferred ***
alternatkke **
fallback *****
fallback_ipv4 ****
partition "Common"
member *****
member *******
}
pool
我曾尝试与此代码,但它不工作会gslb_data。
#!/usr/bin/perl
open my $fh, '<', 'file_to_check'
or die "Cannot open: $!"; # file_to_check is my file name
my @file = <$fh>;
close $fh;
for (0 .. $#file) {
if ($file[$_] =~ /"ooaijp01.intlb.net-pool"/) { # is my key word ooaijp01.intlb.net-pool
my $start = $_;
while ($start >= 0 && $file[$start] !~ /pool/) {
$start--;
}
my $end = $_;
while ($end <= $#file && $file[$end] !~ /pool/) {
$end++;
}
print "\[email protected][$start+1..$end-1]";
}
}
我的预期输出应该是
pool {
name "ooaijp01.intlb.net-pool"
ttl *
preferred ***
alternatkke **
fallback *****
fallback_ipv4 ****
partition "Common"
member *****
member *******
}
pool
,我想在一个单独的输出文件保存
您可以将整个文档写入一个变量,然后尝试获取模式之间的值。这应该对你有帮助 – Praveen