Well, ya... I guess I did the equivalent (though not so concise) method after sending the first email to roundtable...
echo APP-AM005-a | sed 's/[[:alpha:]]//g;s/[[:punct:]]//g'
I like the search inversion though Sean. Much cleaner!
So the problem I have is solved, thanks Sean. But why won't my original method work?
The [[:digit:]]* should have matched all the consecutive digits shouldn't it? And then the ( ) brackets should place the match into buffer 1.
Steve
IBM Global Services
sjm@ca.ibm.com
(204)792-3245
----- Forwarded by Steve Moffat/CanWest/IBM on 05/09/2007 04:08 PM -----
"Sean Walberg" <sean@ertw.com>
Sent by: swalberg@gmail.com
05/09/2007 04:05 PM
|
|
# echo BUILD-AM005-a | sed 's/[^0-9]//g'
005
Sean
On 5/9/07, Steve Moffat <Steve.Moffat@ca.ibm.com > wrote:
Hi All;
I've been trying to write a sed function to return only a numeric portion of a string, but can't seem to get it working.
The input is a single string of letters and numbers, with the numbers always consecutive.
For example: BUILD-AM005-a
I want to get the 005 out of this string.
echo BUILD-AM005-a | sed 's/.*\([[:digit:]]\).*/\1/g'
will return the digit 5. This is good!
So I add an asterisk to try to match multiple digits like:
echo BUILD-AM005-a | sed 's/.*\([[:digit:]]*\).*/\1/g'
and instead of returning 005, it doesn't match anything, so returns nothing.
Can any of you RE maters help me out?
Steve Moffat
IBM Global Services
sjm@ca.ibm.com
(204)792-3245
_______________________________________________
Roundtable mailing list
Roundtable@muug.mb.ca
http://www.muug.mb.ca/mailman/listinfo/roundtable
--
Sean Walberg <sean@ertw.com> http://ertw.com/