vi 编辑器,如何替换每一行的第三个匹配项
vi editor, how to replace third match on every line
使用 vi 编辑器,我想将每行中第三次出现的“:”替换为“:1:”。正确的搜索和替换命令是什么?
谢谢
那就是
%s/^\([^:]*:[^:]*:[^:*]\):\(.*\)/:1:/
其中
%
表示所有行;
s
是替换命令;
/\([^:]*:[^:]*:[^:*]\):\(.*\)/
匹配任意数量(包括零)的非冒号的三个以冒号分隔的序列,从行的开头开始,然后是冒号和行的其余部分,捕获之前的所有内容以及第三个冒号之后的所有内容;和
/:1:/
(前导斜杠也是模式的尾部斜杠)是替换字符串,</code> 和 <code>
分别代表第一个和第二个捕获组, :1:
是文字文本。
使用 vi 编辑器,我想将每行中第三次出现的“:”替换为“:1:”。正确的搜索和替换命令是什么?
谢谢
那就是
%s/^\([^:]*:[^:]*:[^:*]\):\(.*\)/:1:/
其中
%
表示所有行;
s
是替换命令;
/\([^:]*:[^:]*:[^:*]\):\(.*\)/
匹配任意数量(包括零)的非冒号的三个以冒号分隔的序列,从行的开头开始,然后是冒号和行的其余部分,捕获之前的所有内容以及第三个冒号之后的所有内容;和
/:1:/
(前导斜杠也是模式的尾部斜杠)是替换字符串,</code> 和 <code>
分别代表第一个和第二个捕获组, :1:
是文字文本。