文字列daaaaab* aabdcd *から接尾辞文字列" aabdcd "を抽出したい場合、KSHでは次の式が使用されます。
$ {ex ## +([!b])+([b])}
これは、「b」以外の文字に一致して削除し、その後に文字「b」が続くことを意味します。私が理解していないのは、前の+(太字で強調表示)です。なぜそれが必要なのですか?それがないと、正規表現は意図した仕事をすることができません。
#ex=daaaaabaabdcd
#echo ${ex##([!b])+([b])}
daaaaabaabdcd
#echo ${ex##+([!b])+([b])}
aabdcd