vi 编辑器,如何替换每一行的第三个匹配项

vi editor, how to replace third match on every line

使用 vi 编辑器,我想将每行中第三次出现的“:”替换为“:1:”。正确的搜索和替换命令是什么?

谢谢

那就是

%s/^\([^:]*:[^:]*:[^:*]\):\(.*\)/:1:/

其中

%表示所有行;

s是替换命令;

/\([^:]*:[^:]*:[^:*]\):\(.*\)/ 匹配任意数量(包括零)的非冒号的三个以冒号分隔的序列,从行的开头开始,然后是冒号和行的其余部分,捕获之前的所有内容以及第三个冒号之后的所有内容;和

/:1:/(前导斜杠也是模式的尾部斜杠)是替换字符串,</code> 和 <code> 分别代表第一个和第二个捕获组, :1: 是文字文本。