Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 27 Jul 2001 17:04:26 -0400
From:      parv <parv_@yahoo.com>
To:        jasonla@pobox.com
Cc:        freebsd-questions@freebsd.org
Subject:   Re: Regular Expression Help
Message-ID:  <20010727170426.A51524@moo.holy.cow>
In-Reply-To: <20010727201429.24359.qmail@web4605.mail.yahoo.com>; from jasonla00@yahoo.com on Fri, Jul 27, 2001 at 01:14:29PM -0700
References:  <20010727201429.24359.qmail@web4605.mail.yahoo.com>

next in thread | previous in thread | raw e-mail | index | archive | help
on Jul 27 16:43, i got this from Jason...
> I am looking for a little regular expression help, namely
> with the "{}" operators. Below is the file (inventory.txt)
> that I am working with.
> 
> Jan  13  25  15 115
> Jun  31  42  75 492
> Jul  24  34  67 436
> June 19  23  0  846
> Jaa  19  23  0  846
> 
> I want to match a line that begins with "J" and then has 2
> letters after it. SO, all of the above should match except
> for "June"
> 
> Here is the regular expression that I'm using (in gawk):
> 
> gawk '/^J[a-zA-Z]{2}/ {print}' inventory.txt
> 
> My problem is that nothing is matched... or at least
> nothing is printed on screen and I assume that nothing is
> matched.
> 
> I have tried putting paranthesis around the character list,
> but that didn't work either. The brace operators are
> supposed to match the preceding regualar expression the
> specified number of times, right? Am I not understanding
> the use of the braces operators?

try man (g)awk...

    r{n}
    r{n,}
    r{n,m}     One or two  numbers  inside  braces  denote  an
	       interval expression.  If there is one number in
	       the braces, the preceding regexp r is  repeated

    Free Software Foundation   May 17 2000                         11

    GAWK(1)                  Utility Commands                 GAWK(1)

	       n times.  If there are two numbers separated by
               a comma, r is repeated n to m times.  If  there
               is  one  number  followed by a comma, then r is
               repeated at least n times.
               Interval  expressions  are  only  available  if
               either --posix or --re-interval is specified on
               the command line.


...then try this...


# gawk --posix '/^J[a-zA-Z]{2} / {print $0}' inventory.txt

...or, depending on locale, you may prefer...

# gawk --posix '/^J[[:alpha:]]{2} / {print $0}' inventory.txt

...in any case you need a space in there, otherwise you would also
match the 'June' line.  i added '$0' for my own comfort.



To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-questions" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20010727170426.A51524>