[RndTbl] Oh great RE master

John Lange john.lange at open-it.ca
Wed May 9 16:47:53 CDT 2007


I'm confused; what do you mean by "get the 005 or of this string" ?

You want the output to look like:

BUILD-AM-a

or

005

?

I don't think sed is what you want.

I believe this:

echo BUILD-AM005-a | sed 's/.*\([[:digit:]]\).*/\1/g'

Returns 5 because you are substituting everything before and after the
digit with nothing.

Are the strings the same length all the time? Would:

echo BUILD-AM005-a | cut -c 9-11

do?

If not then maybe:

echo BUILD-AM005-a | grep -E -o [0-9]{1\,}

John

On Wed, 2007-05-09 at 14:52 -0500, Steve Moffat 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 at ca.ibm.com
> (204)792-3245
> 
> 
> _______________________________________________
> Roundtable mailing list
> Roundtable at muug.mb.ca
> http://www.muug.mb.ca/mailman/listinfo/roundtable



More information about the Roundtable mailing list