我是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