我有以下文字
我真的很酷。我给自己评分10分。
使用 sed 我想将文字更改为
我* * *。我* * 10 * * 10。
即(将[a-z]
替换为*
)
我尝试使用模式s/[a-z]/*/g
但它将文本替换为
我** ****** ****。我**** ****** 10 *** ** 10。
答案 0 :(得分:1)
您的模式用星号替换每个小写字母。您想要用星号替换多个连续的小写字母。使用+
for repetition:
s/[a-z]\+/*/g
答案 1 :(得分:0)
@ndn给出的答案是正确的想法,但SED默认使用Posix 2 Basic Regular Expressions,因此你没有完整的正则表达式的所有选项。特别是+
运算符(重复一次或多次)在SED中无效。幸运的是*
(重复零或更多)是。因此我们可以这样做:
sed s/[a-z][a-z]*/*/g
哪个应该做你想要的。您还可以使用sed命令行选项启用完整正则表达式(-r
对我来说)
sed -r s/[a-z]+/*/g