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