我在文件中有以下字符串:
?*TEST?*
?+
现在我希望?*
替换为星号*
。替换后文件应该是这样的:
*TEST*
?+
我测试了几种但却找不到答案。问题是每个sed命令也会用?*
替换**
或不替换任何内容。
答案 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***???
?+