给定一个字符串,例如
string="val1 val2 val3 val4"
如何使用 bash 子字符串替换来删除给定的子字符串及其相邻的空间(可能存在也可能不存在)?
例如,这会导致额外的空格:
val='val2'
string=${string/$val/}
# string = "val1 val3 val4"
在我的实际代码中,我不会提前知道子字符串是什么或它在字符串中的位置,因此它是否有前导或尾随空格是未知的。我想做这样的事情,就像你在 中所做的那样sed
,但它当然没有用:
val=" *val2 *"
string=${string/$val/ }
# In my fictitious universe, string = "val1 val3 val4"
# In the real world, string = "val1"
在sed
中,我会使用类似的东西sed -e 's/ *val2 */ /'
,但我想在 bash 中完成所有这些。
有没有办法定义子字符串,使模式包含零个或多个空格 + 'val2' + 零个或多个空格?