linux - Vim :s 替换一行中出现的特定 N < g
问题描述
我尝试使用逗号 (,) 来分隔前两个数字字段中的千位,使用vim command
%s/\([0-9]\)\([0-9]\)\([0-9]\)\([0-9]\);/\1,\2\3\4;/g
但在这种情况下,它还会在第二行的 9,995 中添加逗号,我可以用什么来替换特定的 N < g 出现。
输入
BitstreamCyberCJK;Freeware;30275;28686;v2.0 ;beta (1998-03-17)
Y.OzFontN;Freeware;21957;7621;v13.00 sfnt rev 9995; Pen-Ji (2010-08-24)
预期产出
BitstreamCyberCJK;Freeware;30,275;28,686;v2.0 ;beta (1998-03-17)
Y.OzFontN;Freeware;21,957;7,621;v13.00 sfnt rev 9995; Pen-Ji (2010-08-24)
解决方案
有一种方法可以重复最后一个命令:@:
另外,您可以指定重复次数,例如:10@:
.
所以,从只替换第一个匹配开始:%s/\([0-9]\)\([0-9]\)\([0-9]\)\([0-9]\);/\1,\2\3\4;/
然后,由于我们已经完成了 N 次替换,重复 N-1 次。
例如,要替换前 10 个数字,请使用:
%s/\([0-9]\)\([0-9]\)\([0-9]\)\([0-9]\);/\1,\2\3\4;/
9@:
推荐阅读
- python - 在 Python 中使用 Chrome 的 Selenium Webdriver 问题:回溯错误和无法确定加载状态
- java - 不验证 @RequestParam 是否需要 = false
- python - 如何使用 Python (Pandas) 更改多索引的顺序
- erlang - Erlang Badarith 错误
- javascript - 悬停时的多个图像过渡
- sql - 内存表中的 SQL 一直在增长,尽管它已被清空
- c++ - 基于 SFINAE 的特征来确定是否支持运算符 +
- swift - Swift:似乎无法将 placeClient.currentPlace 的结果位置存储为类属性以在其他地方使用
- firebase - FirebaseFunctions.getinstance() 未完成
- node.js - 外部链接在 Docker Compose 中不起作用