将“?*”替换为“*”而不将“?+”替换为“* +”

问题描述 投票:0回答:1

我在文件中有以下字符串:

?*TEST?*
?+

现在我希望用星号?*替换*。更换后的文件应该是这样的:

*TEST*
?+

我测试了几种方法,但找不到答案。问题是每个sed命令也用?*替换**或什么都没有。

search sed replace
1个回答
0
投票

其中一个应该匹配。在任何情况下,?+保持完整。

$ echo "$a"
*?TEST?*
?+
*?TEST?*
?+
$ echo "$a" |sed 's/[?][*]/*/g'
*?TEST*
?+
*?TEST*
?+
$ echo "$a" |sed -E 's/([*])([?])/\2\1/g'
?*TEST?*
?+
?*TEST?*
?+
$ echo "$a" |sed 's/[?][*]/***???/g'
*?TEST***???
?+
*?TEST***???
?+
© www.soinside.com 2019 - 2024. All rights reserved.