Bash 使用带通配符的SED

Bash 使用带通配符的SED,bash,sed,wildcard,Bash,Sed,Wildcard,我想用通配符替换字符串,但它不起作用 字符串看起来像“some-string-8” 我写 sed -i 's/string-*/string-0/g' file.txt 但结果是 some-string-08 星号(*)表示“前一项的零个或多个” 如果要匹配任何单个字符,请使用 sed -i 's/string-./string-0/g' file.txt 如果要匹配任何字符串(即任何单个字符零次或多次),请使用 因此,正则表达式中的“通配符”概念的工作原理有点不同。为了匹配您将使用的“任

我想用通配符替换字符串,但它不起作用

字符串看起来像“some-string-8”

我写

sed -i 's/string-*/string-0/g' file.txt
但结果是

some-string-08
星号(*)表示“前一项的零个或多个”

如果要匹配任何单个字符,请使用

sed -i 's/string-./string-0/g' file.txt
如果要匹配任何字符串(即任何单个字符零次或多次),请使用


因此,正则表达式中的“通配符”概念的工作原理有点不同。为了匹配您将使用的“任意字符”。“*”修饰符的意思是,匹配任意次数。

嗯,也许我的问题不完整。。。。你的命令对这个恶魔有效。但是,如果我有
some-string-8-x--command-acommand
,则执行该命令的输出是
some-string-0
。之后它将删除所有字符。我想要
some-string-0-x——命令acommand
如果您希望在替换字符串中使用通配符,该怎么办?示例:将“AAA.*BBB”替换为“CCC.*DDD”如果它是回调引用,则形式为(.*)的通配符将替换为\1、\2、。。。等等,例如
sed-r's/a(.*)cat/the\1bat/g'
sed -i 's/string-.*/string-0/g' file.txt