perl kullanarak çoklu sınırlayıcıları bölme


0

Sadece aşağıdaki satırdan 1400 olan ÜCRETSİZ HEAP sayım değerini çıkarmaya çalışıyorum. Burada değeri almak için iki kez split fonksiyon kullanıyorum. Birisi burada bölme işlevini kullanarak 1400 değerini çıkaracak tek bir regex almama yardımcı olabilir.

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

Giriş dizesi:

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]

çıktı:

1400

Yanıtlar:


0

Neden split kullanmak istiyorsun? maç burada daha uygun:

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";

Çıktı:

1400

ancak bu düzenli ifade yığın olmayan yığın için ücretsiz sayımı hem eşleşir
user3834663

1400 ve 52.2 anlamına gelir?
user3834663 12:17

@ user3834663: Üzgünüm, seni anlamadım. Yalnızca 1400veya sonraki değerleri FREE:mi almak istiyorsun ?
Toto,

Sadece 1400 olan
HEAP

Ayrıca ben özgür sayım örnek 1400,1 ondalık değerleri varsa eşleşmeleri gerekir
user3834663
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.