String Shell字符串操作,通配符作用域
我试图通过删除由一些分隔符分隔的子字符串来操作shell中的字符串。目前,通配符中存在一些不希望出现的行为,如下所示:String Shell字符串操作,通配符作用域,string,shell,replace,String,Shell,Replace,我试图通过删除由一些分隔符分隔的子字符串来操作shell中的字符串。目前,通配符中存在一些不希望出现的行为,如下所示: string='start.badstuff.goodstuff.end' echo ${string/bad*.} #start.end 在上面的示例中,假设我知道我要删除的子字符串以'bad'开头,然后是随机'stuff.我希望删除的所有子字符串。我想保留字符串'goodstuff',但是,在本例中,通配符的作用域最宽而不是最窄(使用*='stuff.goodstu
string='start.badstuff.goodstuff.end'
echo ${string/bad*.} #start.end
在上面的示例中,假设我知道我要删除的子字符串以'bad'
开头,然后是随机'stuff.
我希望删除的所有子字符串。我想保留字符串'goodstuff'
,但是,在本例中,通配符的作用域最宽而不是最窄(使用*='stuff.goodstuff'
而不是所需的行为*='stuff'
)
有没有办法限制通配符的作用域在'badstuff'
之后的第一个.
处停止,而不知道'goodstuff'
可能是什么?启用了ext.glob(有关详细信息,请参见此页)
shopt-s extglob
你可以
echo ${string/bad*([^.]).}
导致
start.goodstuff.end