我正在编写一个 perl 程序来提取我匹配的两个模式之间的行。例如下面的文本文件有 6 行。我正在匹配负载均衡器和终端。我想要得到中间的 4 条线。
**load balancer**
new
old
good
bad
**end**
我的问题是如何将负载均衡器和 end 之间的行提取到数组中。任何帮助是极大的赞赏。
您可以使用触发器运算符当您处于标记之间时告诉您。它还将包括实际标记,因此您需要将它们从数据收集中排除。
请注意,如果您有多个记录,这会将所有记录混在一起,因此如果您这样做,您需要存储并重置@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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)