vim编写正则表达式

lfw20051637 2010-12-23 09:07:49
刚学习vim命令,希望通过正则表达式实现以下效果,请各位高手帮忙。谢谢!

原文件(分三个字段,前16位是一个字段,姓名是一个字段,金额是一个字段,姓名与金额间空格为4位)
6221111111111111张三三 1020
6221111111111111张 三 1020
6221111111111111李三三 1020
6221111111111111李 三 1020
6221111111111111张三三 1020
6221111111111111张三三 1020
6221111111111111张三三 1020
6221111111111111张三三 1020
6221111111111111张三三 1020
6221111111111111张三三 1020
6221111111111111张三三 1020
6221111111111111张三三 1020
6221111111111111张三三 1020

希望改为
6221111111111111,张三三,1020.00
6221111111111111,张三,1020.00
6221111111111111,李三三,1020.00
6221111111111111,李三,1020.00
6221111111111111,张三三,1020.00
6221111111111111,张三三,1020.00
6221111111111111,张三三,1020.00
6221111111111111,张三三,1020.00
6221111111111111,张三三,1020.00
6221111111111111,张三三,1020.00
6221111111111111,张三三,1020.00
6221111111111111,张三三,1020.00


...全文
90 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
lfw20051637 2010-12-24
  • 打赏
  • 举报
回复
谢谢啦!!呵呵……搞定
bluejays 2010-12-23
  • 打赏
  • 举报
回复
连续4个空格换成逗号,也可以这么写
:%s/ \{4}/,/g

如果空格个数不固定,可以写成类似这样
:%s/ \{3,6}/,/g 连续3到6个空格换成逗号

第一个子段加逗号也可以这么写
:%s/[0-9]\{16}/&,/g 连续16个数字后面加逗号
bluejays 2010-12-23
  • 打赏
  • 举报
回复
刚才没注意姓名字段中有空格。

连续4个空格换成逗号
:%s/    /,/g
lfw20051637 2010-12-23
  • 打赏
  • 举报
回复
1楼的老师,我还不是很熟悉命令,请问你的命令提要怎么使用,谢谢!

二楼的老师,第二条语句“:%s/ \+/,/g 所有空格换成逗号”,这个还不对,这样的话,会将姓名字段中的空格也加上逗号,与我所需要的结果不符啊。

麻烦老师给予指导,谢谢!
bluejays 2010-12-23
  • 打赏
  • 举报
回复
分三步完成:
:%s/^[0-9]\+/&,/g 行首所有数字后面加逗号
:%s/ \+/,/g 所有空格换成逗号
:%s/[0-9]$/&.00/g 行尾数字后面加.00
freetstar 2010-12-23
  • 打赏
  • 举报
回复
'cut -c1-16 file '+','+'cut -c17-19 file'+','

23,223

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧