使用参数扩展从Bash中删除字符串中的前导数字

时间:2016-08-11 10:55:34

标签: bash parameters parameter-expansion

初始字符串为RU="903B/100ms" 我希望从中获得B/100ms

目前,我写道:

#!/bin/bash
RU="903B/100ms"
RU=${RU#*[^0-9]}
echo $RU 

返回/100ms,因为参数扩展会删除并包含第一个非数字字符。在这种情况下,我想保留第一个非数字字符。我如何通过修改上述文本来做到这一点?

3 个答案:

答案 0 :(得分:2)

您可以使用BASH_REMATCH提取所需的匹配值:

$ RU="903B/100ms"
$ [[ $RU =~ ^([[:digit:]]+)(.*) ]] && echo ${BASH_REMATCH[2]}
B/100ms

或者只是抓住所需的部分:

$ [[ $RU =~ ^[[:digit:]]+(.*) ]] && echo ${BASH_REMATCH[1]}
B/100ms

答案 1 :(得分:1)

假设shopt -s extglob

RU="${RU##+([0-9])}"

答案 2 :(得分:0)

echo "903B/100ms" | sed 's/^[0-9]*//g'
B/100ms