我想在第7次出现后删除分号,在多行上可能如下所示:
FOO; 10.10.10.10 / 24 ;; NA ;;; FOO;酒吧; “foobar的”
意味着结果应该是这样的:
foo; 10.10.10.10; / 24 ;; NA ;;; foo bar“foobar”
到目前为止,我能够将部分划分为捕获组:
:%S /(.{-};.{-};.{-};.{-};.{-};.{-};.{-};)(.*)
我的问题是我不知道如何删除捕获组中的字符 - 我该怎么做?
答案 0 :(得分:2)
一种方法:
:%s/\v^([^;]*;){7}\zs.*/\=substitute(submatch(0), ';', '', 'g')/
答案 1 :(得分:1)
如果每一行具有相同的格式,您只需使用宏即可。 宏也为您提供了一种灵活的方式,以更清晰,更直观的方式处理更多的处理 - 您只需以您知道的最简单的方式执行您想要的操作并重复它。 在这个例子中,它将是:
<强>线强>
foo;10.10.10.10;/24;;NA;;;foo; bar; "foobar" foo;10.10.10.10;/24;;NA;;;foo; bar; "foobar" foo;10.10.10.10;/24;;NA;;;foo; bar; "foobar"
记录宏
qa08f;xjq
并重复N次,例如1000
1000@a
<强>解释强>
qa - record macro with name a 0 - move cursor to the begging of line 8f; - move cursor to the 8th occurences of semicolon x - remove semicolon j - move cursor to the next line q - finish macro And repeat macro number of times you need 1000@a