替换"?*"用" *"但不是"?+"用" * +"

时间:2017-12-21 18:13:11

标签: search sed replace

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

?*TEST?*
?+

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

*TEST*
?+

我测试了几种但却找不到答案。问题是每个sed命令也会用?*替换**或不替换任何内容。

1 个答案:

答案 0 :(得分: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***???
?+