替换命令疑问(%s/[a-z]*/x/g)

文件t:
abbbbbbbbbbbbbbbbbc
cbbbbbbbbbbbbbbbbbd
dbbbbbbbbbbbbbbbbbe
this is a test text!!
eabscde e11123e

执行命令:%s/[a-z]*/x/g

结果为:
x
x
x
x x x x x!x!
x x1x1x1x2x3x

疑问:
为啥"!"跑前面去了
最后两行啥意思?

作者: y331044508   发布时间: 2011-06-14

自己先顶下。。。:m01:

作者: y331044508   发布时间: 2011-06-14

最起码说下是vi啊
因为是*号,0匹配也是匹配成功

作者: ziyunfei   发布时间: 2011-06-14

你把text!!
转换成正则的模式你就理解了

text   !         !
[a-z]*![a-z]*![a-z]*

作者: ywlscpl   发布时间: 2011-06-14

本帖最后由 liion631818 于 2011-06-14 16:18 编辑

理解下/[a-z]*/
*可以匹配前面的0或者多个,
你的问题就在于匹配0个的时候,好好想想,在数下感叹号的个数
  1. echo '!!' | sed 's/[a-z]*/x/g'
  2. x!x!x
复制代码

作者: liion631818   发布时间: 2011-06-14

回复 ziyunfei


    不好意思,是用VI的,是我没写清楚。

作者: y331044508   发布时间: 2011-06-14

回复 ywlscpl


    3Q,明白了。

作者: y331044508   发布时间: 2011-06-14

回复 liion631818


    谢了  :em30:

作者: y331044508   发布时间: 2011-06-14