到匹配项之间的sed替换值

到匹配项之间的sed替换值,sed,Sed,嗨,我想用sed替换符号之间的字符串 示例:-amystring-bxyz 用** -a之后的值可以是类似于-amystring 123-bxyz,-amystring 123,-a'mystring 123'-bxyz,-a'mystring 123' 我试着遵循正则表达式,但它并不适用于所有情况 sed -re "s#(-w)([^\s\-]+)#\1**** #g" 有人能帮我解决这个问题吗 MyString="YourStringWithoutRegExSpecialCharNotEs

嗨,我想用sed替换符号之间的字符串

示例:
-amystring-bxyz

**
-a之后的值可以是类似于
-amystring 123-bxyz
-amystring 123
-a'mystring 123'-bxyz
-a'mystring 123'

我试着遵循正则表达式,但它并不适用于所有情况

sed -re "s#(-w)([^\s\-]+)#\1**** #g"
有人能帮我解决这个问题吗

MyString="YourStringWithoutRegExSpecialCharNotEscaped"
sed "s/-a${MyString} -b/-a**** -b/g"
如果可以为任何正则表达式密钥字符转义字符串,如*+。\/有点像

echo "${MyString}" | sed 's/\[*.\\/+?]/\\&/g' | read -r MyString
摆在我们面前的是sed


否则,您需要更好地定义边缘模式

为了清晰起见,如果您可以为各种情况提供预期的输出,那就太好了。我想替换-a到下一个“-”(空格后加连字符)之间的字符串像-a-b------->a****-b今天我尝试了新的正则表达式,但是如果我的字符串包含多个空格,并且-(不在一起)sed-e的/-a[^]*-*/-a****/g'-e“s/(-a)([^-]\+)/\1****/g”,那么它在一种情况下也不起作用