$line = "Jul 13 00:08:55 dq01aipaynas01p %FWSM-6-302010: 2 in use, 1661: most used";
$line =~ m/(\%(.*)\:)/;
...
## printing %FWSM-6-302010: 2 in use, 1661: but expected is %FWSM-6-302010:
...
A few thoughts on your regex:
(1)
Code:
.*
is a "greedy quantifier". It will match as much of the string as possible while still allowing the entire regex to match the string.
So the match starts from the "%" character and it matches as many characters as possible to reach the next ":" character. That is the reason the match goes beyond the first ":" character, and goes on till the second (and last) ":" character.
What you are looking for is a "non-greedy quantifier", which is formed by the usual quantifier appended by a "?". That will match as few characters as possible and stop at the first ":" after the "%" character.
Search for "non-greedy quantifier" in the official Perl regex tutorial : perlretut - perldoc.perl.org for a detailed review of this concept.
(2)
You don't need any of the braces
Code:
( )
unless you want to store the matched string in special variable
Code:
$1
and the part of the string between "%" and ":" in special variable
Code:
$2
(3)
"%" and ":" are not special characters, so you don't have to escape them. To see a legitimate list of special characters, search for "metacharacters" in the Perl regex tutorial: perlretut - perldoc.perl.org
Hi Friends,
I have data like below
t064266
I want output into this format
t064266
Data are space delimited and i want parse third column data.
Thanks (9 Replies)
Hi Perl Guys
I have another perl question
I have the following code that i have written
Getopt::Long::config(qw( permute bundling ));
my $OPT = {};
GetOptions($OPT, qw(
ver=s
help|h
)) or die "options parsing failed";
This will allow the user to do something like... (4 Replies)
Experts and Informed folks,
Need some help here in parsing the log file.
1389675 Opera_ShirtCatalog INSERT INTO Opera_ShirtCatalog(COL1, COL2) VALUES (1, 'TEST1'), (2,'TEST2');
1389685 Opera_ShirtCatlog_Wom INSERT INTO Opera_ShirtCatlog_Wom(col1, col2, col3) VALUES (9,'Siz12, FormFit',... (12 Replies)
Guys , please help me out with another AWK solution ...
Input
Device Physical Name : Not Visible
Device Symmetrix Name : 0743
Front Director Paths (2):
{
----------------------------------------------------------------------
... (5 Replies)
Hi,
I would like to be able to parse out a substring matching a basic pattern, which is a character followed by 3 or 4 digits (for example S1234 out of a larger string). The main string would just be a filename, like Thisis__the FileName_S1234_ToParse.txt. The filename isn't fixed, but the... (2 Replies)
hi
i have a file p1.htm
<div class="colorID2">
aaaa aaaa aa <br/>
bbbbbbbb bbb<br/>
<br/>cccc ccc ccc
</div><div class="colorID1">
dddd d ddddd<br/>
eeee eeee eeeeeeeeee<br/>
fffff
<br/>g gg<br/> (5 Replies)
Hi all,
I have output of paction command looking like this:
RELCI 0 IP address 1.2.16.3
Xmit: CURRENT Recv: WAIT_HEADER 0 congestions 2617/0 buf. sent/rec
Xmit: CURRENT Recv: WAIT_HEADER 0 congestions 0/0 buf. sent/rec
BUFFER Xmit: ... (6 Replies)
Hi,
I have got this value 18:21:23.330 in one of my variables.
Now I need to parse this time to something.
And then I have to compare it with 2 times, let's say, 15:00 hrs to 23:00 hrs.
Can Date::Manip rescue me from this horrifying situation?
I am quite new to Perl and especially this... (1 Reply)
Hi All,
I have a file that I need to be able to find a pattern match on one line then parse data on the next or subsequent lines - I will know which line needs to be parsed beforehand.
This is what I currently have:
while (<COMMAND_OUT>) {
if ($_ =~ m/TEST/) {
... (4 Replies)