maybee wrote:
> 
> I have a string  mq001234ms00567_b3.45_323x7,
> and I want to subtract the numbers from it, that is,
> I will get 
> mq=001234
> ms=00567
> b=3.45
> 
> These number may have various digits.
> Any neat way doing this under bash?

I myself would use 'sed' (because I always have):

  x=mq001234ms00567_b3.45_323x7

  mq=$(echo "$x" | sed 's/mq\([[:digit:]]*\).*/\1/')
  echo "$mq"
  001234

  ms=$(echo "$x" | sed 's/.*ms\([[:digit:]]*\).*/\1/')
  echo "$ms"
  00567

  b=$(echo "$x" | sed 's/.*_b\([0-9][0-9]*[.][0-9][0-9]*\).*/\1/')
  echo "$b"
  3.45

But it certainly seems reasonable to use the bash parameter expansion
methods to do something similar.

  $ echo ${x%%ms*}
  mq001234

But my brain doesn't think that way and so I didn't work up a full
procedure.

Bob


Reply via email to