my @input = ("2001::2 62 00:00:00:00:00:00 incmp 1/1 vlan-id 100 ");
从包含上述字符串的数组中,我想在62
的位置提取值,并希望将其存储到新数组中。怎么做?
答案 0 :(得分:1)
假设您的数组最终将包含多个值:
my @new_array = map { (split)[1] } @input;
拆分空格上的每一行,并将第二个元素映射到一个新数组。
答案 1 :(得分:1)
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;
答案 2 :(得分:0)
我认为你不想要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
...