bash - 纯 bash:通过在一个命令中组合 ## 和 %% 来提取子字符串?
问题描述
鉴于:
string="apple banana cherry"
如何banana
在一个命令中使用 ## 和 %% 扩展进行提取?
我最接近的尝试是两个命令:
tmp=${string##*apple }
echo ${tmp%% cherry*}
banana
澄清:就我而言,香蕉可能是banana23
,banana38
或其他数字后缀。
解决方案
您可以使用以下方法执行此操作extglob
:
shopt -s extglob
string="apple banana cherry"
echo "${string//@(apple | cherry)/}"
banana
这里的表达式匹配由inside@(apple | cherry)
分隔的字符串之一|
(...)