BASH-捕获固定变量和2个可能变量之间的字符串

BASH-捕获固定变量和2个可能变量之间的字符串,bash,shell,sed,grep,Bash,Shell,Sed,Grep,获取介于“aa=”和%或空之间的内容 string = "aa=value%bb" string2 = "bb=%aa=value" 规则必须对两个字符串都起作用,才能获得“aa=”的值 如果可能的话,我想要一个BASH语言解决方案。使用以下方法: result=$(echo "$string" | grep -o 'aa=[^%]*') result=${result:3} # remove aa= [^%]*匹配任何不包含%的字符序列,因此它将在到达%或字符串结尾时停止$(结果:3}扩展

获取介于“aa=”和%或空之间的内容

string = "aa=value%bb"
string2 = "bb=%aa=value"
规则必须对两个字符串都起作用,才能获得“aa=”的值

如果可能的话,我想要一个BASH语言解决方案。

使用以下方法:

result=$(echo "$string" | grep -o 'aa=[^%]*')
result=${result:3} # remove aa=

[^%]*
匹配任何不包含
%
的字符序列,因此它将在到达
%
或字符串结尾时停止
$(结果:3}
扩展到从字符3开始的子字符串,从开头删除
aa=

我无法通过google搜索找到BASH语言示例。它似乎有点太具体了。(由于两个固定变量)如何排除“aa=”?(从grep结果中)如果您有一个带有PCRE的
grep
版本,您可以使用lookback来排除它。我已经演示了如何使用bash参数展开运算符删除它,以获得从字符3开始的子字符串。