0

UNIXコマンドの結果をこのような配列に入れています

@nums_pre = `cmd | cmd | cmd`;

配列 @nums_pre は次のようになります

$VAR = [
         '1234/some_cmd',
         '4321/some_cmd',
         '1122/some_cmd',
         '3344/some_cmd',
        ];

私は数字だけが欲しいので、これをしました

my @nums_post;
foreach my $val (@nums_pre) {
    if ($val =~ /(\d+)/) {
        push @ports_post, $1;
    }
}

今、新しい配列 @nums_post には、私が望むような数字しかありません。

これを 1 つの配列で 1 つのステップで行う方法はありますか? ed コマンドの結果はbactick、配列に入れられるときに正規表現に対してチェックされますか?

4

2 に答える 2

2

シェルですでにコマンドのパイプを実行しているためgrep、そのパイプにもう1つ追加できます

my @nums_post = `cmd | cmd | cmd | grep -o '[0-9]+'`
于 2013-11-11T07:27:02.607 に答える