首页 > 解决方案 > 纯 bash:通过在一个命令中组合 ## 和 %% 来提取子字符串?

问题描述

鉴于:

string="apple banana cherry"

如何banana在一个命令中使用 ## 和 %% 扩展进行提取?

我最接近的尝试是两个命令:

tmp=${string##*apple }
echo ${tmp%% cherry*}
banana

澄清:就我而言,香蕉可能是banana23,banana38或其他数字后缀。

标签: bash

解决方案


您可以使用以下方法执行此操作extglob

shopt -s extglob

string="apple banana cherry"
echo "${string//@(apple | cherry)/}"

banana

这里的表达式匹配由inside@(apple | cherry)分隔的字符串之一|(...)


推荐阅读