my @input = ("2001::2 62 00:00:00:00:00:00 incmp 1/1 vlan-id 100 ");
从包含上述字符串的数组中,我想提取该位置的值62
并将其存储到一个新数组中。怎么做?
my @input = ("2001::2 62 00:00:00:00:00:00 incmp 1/1 vlan-id 100 ");
从包含上述字符串的数组中,我想提取该位置的值62
并将其存储到一个新数组中。怎么做?
假设您的数组最终将包含多个值:
my @new_array = map { (split)[1] } @input;
在空白处拆分每一行并将第二个元素映射到一个新数组中。
split ' '
在空白处拆分字符串,并( EXPR )[1]
返回由 . 返回的第二个标量EXPR
。
my $input = "2001::2 62 00:...";
my $second = ( split ' ', $input )[1];
你已经澄清你想从数组的每个元素中提取该字段,所以
my @seconds = map { ( split )[1] } @inputs;
这是缩写
my @seconds = map { ( split ' ', $_, 0 )[1] } @inputs;
据我所知,我不认为你想要 grep 不能捕获一个组(在你的情况下你想要捕获62
)。
我会使用一个简单的正则表达式:
#!/usr/bin/perl
use warnings;
use strict;
my @input = ("2001::2 62 00:00:00:00:00:00 incmp 1/1 vlan-id 100 ");
my @foo;
foreach (@input) {
chomp;
my (@match) = ($_ =~ /\d+\s+(\d+)\s+/);
push @foo, @match;
}
foreach (@foo){
print "$_\n";
}
输出:
62
当您使用数组时,我想您将有多个匹配项。以上将匹配与您的测试示例位于同一位置的每个数字,并将它们推送到一个新数组 - @foo
...