divide vários delimitadores usando perl

0

Estou tentando extrair apenas o valor da contagem HEAP GRÁTIS, que é 1400 da linha abaixo. Aqui estou usando a função split duas vezes para obter o valor. Alguém pode me ajudar a obter um único regex que extraia o valor 1400 usando a função split aqui.

my @split_val = split(',',$line);
print $split_val[2];
my @split_val1= split(':',$split_val[2]); 

Sequência de entrada:

2014-04-23 14:66:87,666 INFO  - HEAP - [USAGE: 1948.3, FREE: 1400, MAX: 3597.5]; NON-HEAP - [USAGE: 611.9, FREE: 52.2, MAX: 1776.0]; CLASSES - [Loaded: 67007, Unloaded: 3237, Left: 63770]; THREADS - [Count: 342]

saída:

1400
    
por user3834663 12.09.2017 / 20:16

1 resposta

0

Por que você quer usar o split? jogo é mais conveniente aqui:

my $str = '2014-04-23 14:66:87,666 INFO  - HEAP - [USAGE: 1948.3, FREE: 1400, MAX: 3597.5]; NON-HEAP - [USAGE: 611.9, FREE: 52.2, MAX: 1776.0]; CLASSES - [Loaded: 67007, Unloaded: 3237, Left: 63770]; THREADS - [Count: 342]';
my ($freeValue) = $str =~ /(?<=FREE: )(\d+(?:\.\d+)?)/;
print $freeValue,"\n";

Saída:

1400
    
por 12.09.2017 / 20:26

Tags