use strict;
my $str = '**State Acronym: H - Healthy, W - Warning, C - Critical
Resource Usage Max Warning Critical State
----------------------------------------------------------------------------------------------------
RP0 (ok, active) H
Control Processor 29.42% 100% 80% 90% H
DRAM 2840MB(72%) 3938MB 88% 93% H
bootflash 1889MB(69%) 2753MB 70% 90% H
ESP0(ok, active) H
QFP H
DRAM 81237KB(41%) 196608KB 85% 95% H
IRAM 207KB(10%) 2048KB 85% 95% H
CPU Utilization 2.00% 100% 90% 95% H
Load Average
Slot Status 1-Min 5-Min 15-Min
RP0 Healthy 1.24 1.20 1.23
Memory (kB)
Slot Status Total Used (Pct) Free (Pct) Committed (Pct)
RP0 Healthy 4033104 2909060 (72%) 1124044 (28%) 3749844 (93%)
CPU Utilization
Slot CPU User System Nice Idle IRQ SIRQ IOwait
RP0 0 3.51 4.89 0.00 90.10 0.95 0.53 0.00
1 2.96 4.55 0.00 90.98 1.06 0.42 0.00
2 21.93 2.01 0.00 75.28 0.67 0.09 0.00
3 29.17 34.41 0.00 25.93 10.09 0.37 0.00
2222233333111111111111111111111111111111 111112222222222
100
90
80
70
60
50
40
30
20
10
0....5....1....1....2....2....3....3....4....4....5....5....6
0 5 0 5 0 5 0 5 0 5 0
CPU% per second (last 60 seconds)
1 1 1 1 1 1 1
439546515464943339403403334255420343303354853430442395424873
100
90
80
70
60
50
40
30
20
10 ** **#* * # * * * *** * * * ** * ** *
0....5....1....1....2....2....3....3....4....4....5....5....6
0 5 0 5 0 5 0 5 0 5 0
CPU% per minute (last 60 minutes)
* = maximum CPU% # = average CPU%
% Ambiguous command
% Invalid input detected at \'^\' marker
% Bad Mask /xx for address X.X.X.X
% X.X.X.X overlaps with GigabitEthernet0/1
Command rejected: Conflict between \'nonegotiate\' and \'dynamic\' status
% Configuration of multiple subinterfaces of the same main interface with the same VID is not permitted
% Configuring IP routing on a LAN subinterface is only allowed if that subinterface is already configured as part of a VLAN
% Inconsistent address and mask
% Invalid next hop address (it\'s this router)
';
my $regex = qr/^(\%.*|Command rejected.*)/mp;
if ( $str =~ /$regex/g ) {
print "Whole match is ${^MATCH} and its start/end positions can be obtained via \$-[0] and \$+[0]\n";
# print "Capture Group 1 is $1 and its start/end positions can be obtained via \$-[1] and \$+[1]\n";
# print "Capture Group 2 is $2 ... and so on\n";
}
# ${^POSTMATCH} and ${^PREMATCH} are also available with the use of '/p'
# Named capture groups can be called via $+{name}
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for Perl, please visit: http://perldoc.perl.org/perlre.html