首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >VI如何替换每行前n个字符后面的n个字符

VI如何替换每行前n个字符后面的n个字符
EN

Stack Overflow用户
提问于 2014-10-21 23:44:42
回答 2查看 95关注 0票数 0

我有一个用逗号分隔的数据集,如下所示。

882710454,122.00

883710414,122.00

888710514,122.00

888,710,414,122.00

但是,数据集中有一些特定的行,每3个字符后会出现逗号(检查上面的第4行),这使得无法将数据导入postgres数据库。我想删除每3个字符后出现的逗号,只保留有效分隔符的逗号。

请注意,我正在处理一个巨大的数据集,这使得逐行删除逗号是不可能的。我需要一个可以在vi或nano中执行此操作的全局命令。

请协助。

EN

回答 2

Stack Overflow用户

发布于 2014-10-22 00:04:55

您需要在vi中使用正则表达式和全局查找和替换:

代码语言:javascript
复制
:%s/,\(\d\{3}\),/\1/g

解释:

  • %s代表搜索,replace
  • /启动搜索part
  • ,\(\d\{3}\),匹配逗号+三个数字+逗号(
    • %s表示转义并结束搜索部分,启动替换part
    • \1匹配搜索中的三个数字part
    • /结束替换part
    • g用于全局替换(在整个文件中)
票数 2
EN

Stack Overflow用户

发布于 2014-10-21 23:51:18

vi:

代码语言:javascript
复制
:%s/^\([0-9]\{3\}\),\([0-9]\{3\}\),\([0-9]\{3\}\),/\1\2\3,/
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26490805

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档