如何删除Visual Studio代码中的重复行?

假设你有以下文本:

abc
123
abc
456
789
abc
abc

我想去掉所有的“abc”行,只留下一行。我不介意排序。结果应该是这样的:

abc
123
456
789
136910 次浏览

我只是有同样的问题,并找到Visual Studio代码包“排序行”。详见Visual Studio Code市场(例如排序行)。

这个包有选项“排序行(唯一)”,这为我做了。注意行首和行尾的空白。它们影响行是否被认为是唯一的。

如果行序不重要

如果行还没有按字母顺序排序,则执行以下步骤 (基于这个相关问题:如何使用正则表达式从文件中找到并删除重复的行?)

  1. < p > 控制 + F

  2. 切换"替换模式"

  3. 切换“使用正则表达式”;(带有.*符号的图标)

  4. 搜索字段中,键入^(.*)(\n\1)+$

  5. 在“替换为"字段,类型$1

  6. 单击the Replace All button(“替换全部”)。

如果行顺序很重要,那么你不能排序

在这种情况下,要么求助于VS Code之外的解决方案(参见在这里),或者-如果你的文档不是很大,你不介意弹出替换所有按钮-遵循前面的步骤,但在步骤4和5中,输入这些:
(基于删除特定的重复行而不进行排序)

警告:有太多行(1000+)的文件块;可能会导致VS Code崩溃;在某些情况下可能引入空行。

  • < p > 搜索: ((^[^\S$]*?(?=\S)(?:.*)+$)[\S\s]*?)^\2$(?:\n)?

  • < p > 替换为: $1

然后点击“全部替换”;按钮重复出现的次数是多少

当您单击按钮时,行数停止减少时,您就知道已经足够了。导航到文档的最后一行来关注它。

尝试查找并替换为正则表达式

    <李> < p >找到: 李^(.+)((?:\r?\n.*)*)(?:\r?\n\1)$ < / p > < / > <李> < p >替换: 李$1$2 < / p > < / >

在第一组中引入一些方差是可能的。

安装DupChecker扩展,点击F1,并键入“Check duplicate”。

它将检查副本并询问您是否要删除它们。

在vscode v1.62中有一个消除重复行从一个选项中的命令:

删除重复行

命令面板中的Delete Duplicate Lines

editor.action.removeDuplicateLines作为键绑定中的命令

(该命令没有默认的按键绑定)


这是一个非常有趣的扩展:变压器

特点:

  • 作为新文档的唯一行
  • 独特的线条

  • CSV对齐
  • 对齐游标
  • 紧凑的CSV
  • 复制到新文档
  • 将重复行计算为新文档
  • 编码/解码
  • 过滤行作为新文档
  • 过滤行
  • 加入行
  • JSON字符串作为文本
  • 行作为JSON字符串数组
  • 规范化变音符符号
  • 随机线
  • 随机选择
  • 反向行
  • 逆向选择
  • 向后旋转选区
  • 向前旋转选择
  • 选择了
  • 选择行
  • 选择JSON字符串
  • 按长度排序
  • 行排序
  • 排序选择
  • 分割线之后
  • 之前的分割线
  • 分线
  • 装饰线
  • 修剪的选择

独特的线条

从文档中删除重复的行 如果没有选择,则当前块

作为新文档的唯一行

在新文档中打开唯一行的操作是选择或 如果没有选择,则当前块

除了“Unique lines”之外,我没怎么玩过。命令,但它似乎做得很好(包括尝试宏记录器!)。

添加到@Marc。2377的答复。

如果顺序很重要,并且您不关心只保留最后的重复行,如果您只想删除重复的非空行,则只需搜索下面的regexp

^(.+)\n(?=(?:.*\n)*?\1$)

如果你也想删除重复的空行,使用*而不是+

^(.*)\n(?=(?:.*\n)*?\1$)

什么都不替换。

 fill search-and-replace box截图 .

这将取一行,并试图找到前面更多(可能是0)行,后面跟着完全相同的行。它将删除所取的线。

这只是一个一次性的正则表达式。不需要垃圾邮件替换按钮。

现在还考虑了@awk的注释,其中最后一行必须有换行符才能被识别为重复。现在这种情况不再存在了,我们可以从要搜索的行中排除\n,并在找到的行中添加$

实际上不是在Visual Studio Code中,但如果它能工作,它就能工作。

  1. 打开一个新的Excel电子表格
  2. 将数据粘贴到一个列中
  3. 转到数据选项卡
  4. 选择数据列(如果还没有)
  5. 单击删除重复的(在条的中间位置)
  6. 单击好吧删除重复项。

这不是最好的答案,正如你指定的Visual Studio Code,但正如我所说:如果它工作,它工作:)

Sublime Text 3 .

它具有非常快的原生排列函数。

  • Edit > Permute Lines > Unique< kbd >⇧⌘U < / kbd >,和
  • Edit > Permute Selections > Unique

Visual Studio代码是我每天的司机。但是,我让崇高的文本在这些情况下待命。

如果你不介意一些Vim在你的VS代码。可以安装Vim仿真插件。

然后可以使用vim命令

:sort u

它会对行进行排序,并删除重复的行