使用Perl提取特定行

abh*_*uri 3 perl line-processing

我正在编写一个perl程序来提取我匹配的两个模式之间的行.例如,下面的文本文件有6行.我正在匹配负载均衡器并结束.我想得到介于两者之间的4条线.

**load balancer** 
new 
old
good
bad
**end**
Run Code Online (Sandbox Code Playgroud)

我的问题是如何在负载均衡器之间提取行并结束到数组中.任何帮助是极大的赞赏.

TLP*_*TLP 7

您可以使用触发器操作符告诉您何时在标记之间.它还将包括实际标记,因此您需要从数据集合中除外.

请注意,如果您有多个记录,这将将所有记录混合在一起,因此如果您需要以@array某种方式存储和重置.

use strict;
use warnings;

my @array;
while (<DATA>) {
    if (/^load balancer$/ .. /^end$/) {
        push @array, $_ unless /^(load balancer|end)$/;
    }
}

print @array;

__DATA__
load balancer
new 
old
good
bad
end
Run Code Online (Sandbox Code Playgroud)