vim - 如何查找具有指定数量的指定字符的行

时间:2014-04-23 21:34:46

标签: vim

我有100k行文件,有些行有未转义的撇号,如:

""Luis" number 4"

我想:

"\"Luis\" number 4"

那么如何才能找到所有超过2 "个字符的行。是否可以在vim中轻松完成?否则它是用于简单的脚本任务。

3 个答案:

答案 0 :(得分:1)

如果您只想查找此类行,可以按以下方式搜索:

/.*".*".*".*

其中.*将匹配零个或多个字符,而"是您正在寻找的字面引用。

第一个和最后一个.*模式并非严格必要,但它们可确保在找到搜索时突出显示整行。

答案 1 :(得分:0)

你可以尝试

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

答案 2 :(得分:0)

%s/\v"(.*)"(.*)"(.*)"/"\1\\"\2\\"\3"/

打破这个局面:

  • %s:代替每一行
  • \v:非常神奇(不必逃避正则表达式中的所有parens)
  • "(.*)"(.*)"(.*)":引号中的任何内容都引用任何引号

用引号替换,开头内部引用(\1),转义引号,内引号内的所有内容(\2),另一个转义引号,然后是其余内容({ {1}})和一个接近的引用。