MOH*_*MED 0 linux shell awk sed ash
我有字符串包含一个路径
string="toto.titi.1.tata.2.abc.def"
Run Code Online (Sandbox Code Playgroud)
我想提取位于其后的子串toto.titi.1.tata.2..但这里的1和2是示例,可以是其他数字.
一般来说:我想提取位于其后的子串toto.titi.[i].tata.[j]..
[i]并且[j]是一个数字
怎么做?
纯bash解决方案:
[[ $string =~ toto\.titi\.[0-9]+\.tata\.[0-9]+\.(.*$) ]] && result="${BASH_REMATCH[1]}"
echo "$result"
Run Code Online (Sandbox Code Playgroud)
bash使用参数扩展而不是正则表达式的替代解决方案:
echo "${string#toto.titi.[0-9].tata.[0-9].}"
Run Code Online (Sandbox Code Playgroud)
如果数字可以是多位数值(即大于9),则需要使用扩展模式:
shopt -s extglob
echo "${string#toto.titi.+([0-9]).tata.+([0-9]).}"
Run Code Online (Sandbox Code Playgroud)