LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1061|回复: 14

vi匹配的疑惑

[复制链接]
发表于 2004-7-26 14:48:46 | 显示全部楼层 |阅读模式
举个简单的例子,有文件内容
1 1
1 1.
现要变成
1 1 1
1 1 1
原文件最后一行的最后有个点,如何只匹配一次就实现?
我用
:%s/1 1[\.$]/1 1 1/g
:%s/1 1[.$]/1 1 1/g
:%s/1 1[$\.]/1 1 1/g
:%s/1 1[$.]/1 1 1/g
都没有成功,不是说[]里是匹配任意的吗?我让他匹配.或$为什么不行呢?
 楼主| 发表于 2004-7-26 14:50:10 | 显示全部楼层
呵呵上面的冒号加%变成了:%
发表于 2004-7-26 14:56:42 | 显示全部楼层
:%s/.$/ 1/g
这样好像可以
发表于 2004-7-26 14:58:40 | 显示全部楼层
  1. :%s/[ 1$| 1.$]/1 1/
复制代码
 楼主| 发表于 2004-7-26 18:47:01 | 显示全部楼层
经试验
:%s/.$/ 1/g
这样好像可以

结果为
1   1
1 1 1
:%s/[ 1$| 1.$]/1 1/

结果为
1 1 1
1 1 1.
最后的点并没有去掉


都不是我想要的结果
发表于 2004-7-26 19:51:31 | 显示全部楼层
:sorry
try it ;)

  1. :%s/1$\|1.$/1 1/
复制代码

test pass
发表于 2004-7-26 20:45:31 | 显示全部楼层
我也来,刚学的啊,
:%s/1 1.*/1 1 1/g
:%s/\(1 1\).*/\1 1/g
把"1 1"后面的部分都替换成" 1"
发表于 2004-7-26 21:14:19 | 显示全部楼层

  1. 1       1
  2. 1       1.
  3. 1       1
  4. 1       1.

  5. :%s/\.$/\t1/g

  6. 1       1
  7. 1       1       1
  8. 1       1
  9. 1       1       1
复制代码

是不是要考虑格式?
发表于 2004-7-26 21:23:42 | 显示全部楼层
最初由 aaccdd 发表

  1. 1       1
  2. 1       1.
  3. 1       1
  4. 1       1.

  5. :%s/\.$/\t1/g

  6. 1       1
  7. 1       1       1
  8. 1       1
  9. 1       1       1
复制代码

是不是要考虑格式?

\.$只匹配2、4行的末尾
发表于 2004-7-26 21:25:43 | 显示全部楼层
改一下就行了:
%s/1\.$\|1$/1\t1/g
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表