我尝试使用perl中的正则表达式将以“1.Virtualization”开头的值grep到"2.Virtualization“。在1.虚拟化和2.数组中的虚拟化之间有大量数据。
我的数组内容示例如下所示。
"1.虚拟化容量管理因性能差而导致的事件数0 999 10 5 4容量计划的生产成本10K 100K 80K 30K 10K计划外购买容量的数量0999 15 10 5 2.虚拟化财务管理因性能差而导致的事件数0 999 10 5 4容量计划的生产成本10K 100K 80K 30K 10K
我如何写一个控制循环,它的grep值介于1和2之间。在1和2之间,它甚至应该grep数据“产能计划的生产成本10K 100K 80K 30K 10K”,并将其放入一个数组位置。
我试着写了一些不能理解如何编写受控循环的代码。有人能帮我解决这个问题吗?
foreach (@array) {
if ($_ =~ /\d+\.\s+Virtualization.*/) { #greps values starting in 1. Virtualizaton
push (@node_level1, "$_"); #stores in the node_level1
} elsif ($_ =~ /(\%\s+.*)/) { #greps values beginning with % Number of Nodes
# print "$_\n";
}
}提前谢谢。
发布于 2012-12-10 08:04:57
使用状态容器:
my $state = 0;
foreach (@array) {
if ($_ =~ /1.\s+Virtualization/) {
$state = 1;
} elsif (($state == 1) and ($_ =~ /2.\s+Virtualization/)) {
$state = 0;
} elsif ($state == 1) {
push (@node_level1, $_); #stores in the node_level1
}
}发布于 2012-12-10 11:18:45
perl中有一个自动机操作符,它可以做与perreal的答案相同的事情,即flip-flop operator
foreach (@array) {
if (/1.\s+Virtualization/../2.\s+Virtualization/) {
push (@node_level1, $_);
}
}https://stackoverflow.com/questions/13793047
复制相似问题