【发布时间】:2013-12-15 05:29:12
【问题描述】:
有一个数据:
set interfaces ge-1/0/2 unit 101 family inet address 10.187.132.3/27 vrrp-group 1 virtual-address 10.187.132.1
set interfaces ge-1/0/2 unit 102 family inet address 10.187.132.35/27 vrrp-group 2 virtual-address 10.187.132.33
set interfaces ge-1/0/2 unit 103 family inet address 10.187.132.67/27 vrrp-group 3 virtual-address 10.187.132.65
set interfaces ge-1/0/2 unit 104 family inet address 10.187.132.99/27 vrrp-group 4 virtual-address 10.187.132.97
set interfaces ge-1/0/2 unit 105 family inet address 10.187.132.131/27 vrrp-group 5 virtual-address 10.187.132.129
set interfaces ge-1/0/2 unit 106 family inet address 10.187.132.163/27 vrrp-group 6 virtual-address 10.187.132.161
set interfaces ge-1/0/2 unit 107 family inet address 10.187.132.195/27 vrrp-group 7 virtual-address 10.187.132.193
set interfaces ge-1/0/2 unit 108 family inet address 10.187.132.227/27 vrrp-group 8 virtual-address 10.187.132.225
我们需要提取一些列并将其存储到不同的变量中。数据来自过滤文件后,因此它将是$_。有没有办法将它存储到不同的数组中?
$address[0] = "10.187.132.3/27"
$vrrp-group[0] = "1"
$virtual-address[0] = "10.187.132.1"
$address[1] = "10.187.132.35/27"
$vrrp-group[1] = "2"
$virtual-address[1] = "10.187.132.33"
我尝试过使用 split 但我不知道如何在 perl 上选择特定的列,这很容易用 awk (awk {'print $8'}) 完成。
@address = split(/\s+/, $_);
但是失败了。
预期结果:
@地址:
$VAR1 = '10.187.132.3/27'
$VAR2 = '10.187.132.35/27'
$VAR3 = '10.187.132.67/27'
$VAR4 = '10.187.132.99/27'
$VAR5 = '10.187.132.131/27'
$VAR6 = '10.187.132.163/27'
$VAR7 = '10.187.132.195/27'
$VAR8 = '10.187.132.227/27'
@vrrp-组:
$VAR1 = '1'
$VAR2 = '2'
$VAR3 = '3'
$VAR4 = '4'
$VAR5 = '5'
$VAR6 = '6'
$VAR7 = '7'
$VAR8 = '8'
@虚拟地址:
$VAR1 = '10.187.132.1'
$VAR2 = '10.187.132.33'
$VAR3 = '10.187.132.65'
$VAR4 = '10.187.132.97'
$VAR5 = '10.187.132.129'
$VAR6 = '10.187.132.161'
$VAR7 = '10.187.132.193'
$VAR8 = '10.187.132.225'
【问题讨论】: