1

初始字符串是RU="903B/100ms" 我希望从中获取B/100ms的。

目前,我写过:

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

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

4

3 回答 3

2

假设shopt -s extglob

RU="${RU##+([0-9])}"
于 2016-08-11T11:04:22.373 回答
2

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

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

或者只是将所需的部分捕获为:

$ [[ $RU =~ ^[[:digit:]]+(.*) ]] && echo ${BASH_REMATCH[1]}
B/100ms
于 2016-08-11T11:09:00.730 回答
0
echo "903B/100ms" | sed 's/^[0-9]*//g'
B/100ms
于 2016-08-11T10:59:59.200 回答