【发布时间】:2012-12-09 23:36:17
【问题描述】:
我正在尝试使用 perl 中的正则表达式将从“1. Virtualization”开始的值 grep 到“2.Virtualization”。 1.Virutalization 和 2.Virtualization 之间有很多数据在一个数组中。
我的数组内容示例如下所示。
"1. 虚拟化容量管理 因性能不佳而导致的事件数量 0 999 10 5 4 容量计划的生产成本 10K 100K 80K 30K 10K 计划外购买容量的数量 0 999 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";
}
}
提前致谢。
【问题讨论】:
-
输入数据不清楚,'%Number of nodes'在哪里?
-
该数据是一长行,还是单独的行。你的问题没有说清楚。我认为这是一个格式化的东西(不是在文字行之前缩进四个空格)但看起来你已经把它放在你的例子中的一行中。